2010-10-27 2 views
9

Если вы нажмете здесь, нажмите здесь, чтобы заказать здесь: http://www.game onglove.com/ gog/test3.html, а затем нажмите ту же кнопку в появившемся окне лайтбокса, запрос ajax будет запускаться с использованием $ .post().jquery ajaxStart не работает

Вы можете нажать «продолжить покупки», чтобы вернуться в предыдущее окно, чтобы быстро начать работу.

Если я выполняю код jquery здесь, в консоли (chrome или firefox), то он работает правильно. Он просто не будет работать, откуда он находится в исходном коде:

$('#cboxLoadingGraphic').ajaxStart(function() { 
$(this).show(); 
$('#cboxLoadedContent').hide(); 
}).ajaxStop(function() { 
$(this).hide(); 
$('#cboxLoadedContent').fadeIn('slow'); 
}); 

Почему он будет работать с консоли, но не в его текущем местоположении в источнике? Как мне заставить это работать?

ответ

21

Этот элемент становится создан позже, вы должны связать после его создания, или немного проще всего связать обработчик document с самого начала:

$(document).ajaxStart(function() { 
    $('#cboxLoadingGraphic').show(); 
    $('#cboxLoadedContent').hide(); 
}).ajaxStop(function() { 
    $('#cboxLoadingGraphic').hide(); 
    $('#cboxLoadedContent').fadeIn('slow'); 
}); 
+1

Спасибо! Работала отлично. Я пробовал использовать «документ» прошлой ночью и продолжал задаваться вопросом, почему мой браузер настаивал на загрузке следующей страницы за пределами лайтбокса. Все, что я забыл сделать, это использовать «#cboxLoadingGraphic» вместо «this», который я понял, как только увидел ваш пост. :) – Lauren

Смежные вопросы