PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
Зверь
Отправлено: 04 Января, 2012 - 16:22:23
Частый гость
Покинул форум
Сообщений всего: 243
Дата рег-ции: Окт. 2011
Помог: 7 раз(а)
Всем привет
Помогите решить проблему, есть некий HTML блок и внутри него картинка
При клике по картинке должен плавно скрыться блок и выполниться AJAX-запрос.
Так вот, проблема в том, что блок скрывается, но после выполнения AJAX он появляется снова.
Я уже битый час не могу понять как заставить его не появляться заново.
CODE (
javascript ):
скопировать код в буфер обмена
$( document) .ready ( function ( ) {
$( '.delete' ) .live ( 'click' , function ( ) {
$( this ) .parents ( ".background" ) .animate ( { opacity: 'hide' } , "slow" , function ( ) {
$.post ( 'script.php' , 'post=1' ) ;
} ) ;
} ) ;
} ) ;
Если надо могу предоставить живой пример на сервере
(Добавление)
Без ajax анимация отрабатывает нормально(Отредактировано автором: 04 Января, 2012 - 16:24:07)
tuareg
Отправлено: 04 Января, 2012 - 18:12:19
Участник
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
Попробуйте поменять конструкцию функции, т.е сначала посылать запрос, а потом удалять.
Кстати это будет более логичным.
CODE (
javascript ):
скопировать код в буфер обмена
$( document) .ready ( function ( ) {
$( '.delete' ) .live ( 'click' , function ( ) {
var thisDel= $( this ) .parents ( "div.background" ) ;
/*Здесь для проверки сделайте*/
thisDel.addClass ( 'test' ) ;
$.post ( 'script.php' , 'post=1' , function ( ) {
thisDel.animate ( { opacity: 'hide' } , "slow" ) ;
} ) ;
} ) ;
} ) ;
tuareg
Отправлено: 04 Января, 2012 - 18:28:59
Участник
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
Попробуйте что-нибудь вернуть при запросе. типа ок. Или удаляйте это сообщение.
CODE (
javascript ):
скопировать код в буфер обмена
$( document) .ready ( function ( ) {
$( '.delete' ) .live ( 'click' , function ( ) {
$( this ) .parents ( ".background" ) .animate ( { opacity: 'hide' } , "slow" , function ( ) {
$( this ) .remove ( ) ;
$.post ( 'script.php' , 'post=1' ) ;
} ) ;
} ) ;
} ) ;
Зверь
Отправлено: 04 Января, 2012 - 18:45:22
Частый гость
Покинул форум
Сообщений всего: 243
Дата рег-ции: Окт. 2011
Помог: 7 раз(а)
tuareg пишет: Попробуйте что-нибудь вернуть при запросе. типа ок. Или удаляйте это сообщение.
CODE (
javascript ):
скопировать код в буфер обмена
$( document) .ready ( function ( ) {
$( '.delete' ) .live ( 'click' , function ( ) {
$( this ) .parents ( ".background" ) .animate ( { opacity: 'hide' } , "slow" , function ( ) {
$( this ) .remove ( ) ;
$.post ( 'script.php' , 'post=1' ) ;
} ) ;
} ) ;
} ) ;
remove уже пробовал отрабатывает анимация=>удаляется=>запрос=>блок как ни в чем не бывало появляется снова
IllusionMH пишет: Зверь , а сервер что-то возвращает на удаление? Если ничего не возвращает, то анимации на успешное завершение запроса так и не будет.
А если попробовать в качестве функции обратного вызова этот вариант:
При нем тоже появляется обратно?
Да >_<
Сейчас попробую что-нибудь вернуть и в зависимости от этого делать или нет анимацию
IllusionMH
Отправлено: 04 Января, 2012 - 18:57:22
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011
Откуда: .kh.ua
Помог: 242 раз(а)
Зверь , нашел, что в примере по ссылке выше есть код
CODE (
javascript ):
скопировать код в буфер обмена
$( "#container" ) .ajaxComplete ( function ( event, request, settings)
{
loading_hide( ) ; //<--place breakpoint here
$( "#container" ) .html ( msg) ;
} ) ;
Который выполняется, после нажатия на кнопку удаления.
Возможно это и есть проблема. Нужно либо поменять логику, либо добавить проверку на возвращаемый ответ.
P.S. правда не пойму как он вызывается, если запрос заменить на console.log() (Отредактировано автором: 04 Января, 2012 - 18:58:35)
Зверь
Отправлено: 04 Января, 2012 - 19:07:36
Частый гость
Покинул форум
Сообщений всего: 243
Дата рег-ции: Окт. 2011
Помог: 7 раз(а)
Нет, он выполняется только после клика по элементу постраничной навигации, иначе бы в консоли был виден еще 1 запрос, но я все таки поставил проверку и все равно не работает.
(Добавление)
tuareg пишет: Если это так, то тогда просто удаляйте
Ура... Спасибо тебе огромное!
Я бы ни разу не додумался...
Еще раз спасибо, проблема решена!
(Добавление)
В общем вот конечный вариант
CODE (
javascript ):
скопировать код в буфер обмена
$( '.delete' ) .live ( 'click' , function ( ) {
$( this ) .parents ( ".background" ) .animate ( { opacity: 'hide' } , "slow" , function ( ) {
$.ajax ( {
type : "POST" ,
url: "message.php" ,
data: "post=1" ,
global: false
} ) ;
} ) ;
} ) ;
IllusionMH
Отправлено: 04 Января, 2012 - 19:15:41
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011
Откуда: .kh.ua
Помог: 242 раз(а)
Писал до сообщения о решении проблемы.
Затер.
(Отредактировано автором: 04 Января, 2012 - 19:17:13)
tuareg
Отправлено: 04 Января, 2012 - 19:16:45
Участник
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
в функции
CODE (
javascript ):
скопировать код в буфер обмена
function loadData...
$( "#container" ) .ajaxComplete ( function ( event, request, settings)
{
alert ( 'что-то' )
loading_hide( ) ;
$( "#container" ) .html ( msg) ;
} ) ;
По- моему вот это срабатывает
(Добавление)
Попробуй то что я указал в последнем посте.
P.S Не надо так делать в ajax запросе.
Это надо вынести отдельно.
Зверь
Отправлено: 04 Января, 2012 - 19:26:20
Частый гость
Покинул форум
Сообщений всего: 243
Дата рег-ции: Окт. 2011
Помог: 7 раз(а)
tuareg пишет:
P.S Не надо так делать в ajax запросе.
Это надо вынести отдельно.
event, request, settings были для тестов, забыл убрать
А если вынести, то как тогда передать в html() то что пришло с сервера?(Отредактировано автором: 04 Января, 2012 - 19:28:05)
Поиск в теме | Версия для печати
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB