JQuery не может заставить Facebox работать внутри вызова AJAX - PullRequest
0 голосов
/ 01 января 2011

С моей главной страницы я вызываю 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');
   });
});

Таким образом, в основном, после нажатия кнопки уведомить, я меняю значок и 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 Ответ

1 голос
/ 01 января 2011

Хорошо, похоже, мне нужно было переместить код 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();
   });
});
...