2011-01-01 4 views
0

С моей главной страницы я вызываю ajax-файл через jquery, поскольку в файле ajax есть некоторый дополнительный код jquery. Оригинальная ссылка выглядит следующим образом:JQuery can not get facebox работает внутри ajax-вызова

<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 появилось, если они попытаются щелкнуть появившийся новый значок2.png. Проблема заключается в том, что после того, как я щелкнул начальный значок, все работает отлично, только когда я пытаюсь щелкнуть новый значок2.png, он все еще выполняет код jgrowl из гостевого действия. Но когда я смотрю источник, он показывает это:

<a href="/page2.php" rel="facebox" class=""><img src="/icon2.png"></a> 

Так что, похоже, что работа должна работать правильно? Что я делаю не так? Я попытался добавить код лицевой панели на главную страницу, которая также вызывает файл ajax и все еще такую ​​же проблему.

ответ

1

Ок, похоже, мне нужно было переместить код лицевой панели в свою собственную функцию, а затем вызвать его после удаления класса и отменить щелчок. Например:

$(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(); 
    }); 
});