JQuery не может заставить Facebox работать внутри вызова AJAX
С моей главной страницы я вызываю файл ajax через jquery, в этом файле ajax есть некоторый дополнительный код jquery. Исходная ссылка выглядит так:
<a href="/page1.php" class="guest-action notify-function"><img src="/icon1.png"></a>
Тогда код:
$(document).ready(function(){
$('a[rel*=facebox]').facebox();
$('.guest-action').click( function() {
$.get( $(this).attr('href'), function(responseText) {
$.jGrowl(responseText);
});
return false;
});
$('.notify-function').click( function() {
$(this).find('img').attr('src','/icon2.png');
$(this).attr('href','/page2.php');
$(this).removeClass('guest-action').removeClass('notify-function').attr('rel','facebox');
});
});
Таким образом, в основном после нажатия кнопки notify, я меняю значок и URL-адрес ссылки, затем удаляю классы, чтобы повторный щелчок не запускался, и добавляю rel="facebox" к ссылке, чтобы окно facebox было всплывающее окно, если они пытаются нажать на новый icon2.png, который появляется. Проблема в том, что после того, как я щелкаю по исходному значку, все работает просто отлично, за исключением того, что когда я пытаюсь щелкнуть по новому значку icon2.png, он все еще выполняет код jgrowl из guest-action. Но когда я просматриваю источник, он показывает это:
<a href="/page2.php" rel="facebox" class=""><img src="/icon2.png"></a>
Так что казалось, что должно работать правильно? Что я делаю неправильно? Я попытался добавить код facebox на главную страницу, которая также вызывает файл ajax, и все еще та же проблема.
1 ответ
Хорошо, похоже, мне нужно было переместить код facebox в его собственную функцию, а затем вызвать его после того, как я удалю класс и откреплю щелчок. Вот так:
$(document).ready(function(){
function reInit() {
$('a[rel*=facebox]').facebox();
}
$('.guest-action').click( function() {
$.get( $(this).attr('href'), function(responseText) {
$.jGrowl(responseText);
});
return false;
});
$('.notify-function').click( function() {
$(this).find('img').attr('src','/icon2.png');
$(this).attr('href','/page2.php');
$(this).unbind('click').removeClass('guest-action').removeClass('notify-function').attr('rel','facebox');
reInit();
});
});