0

在我的主页上,我通过 jquery 调用了一个 ajax 文件,在该 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 代码。但是当我查看源代码时,它会显示:

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

所以看起来应该可以正常工作吗?我究竟做错了什么?我尝试将facebox代码添加到调用ajax文件的主页中,但仍然是同样的问题。

4

1 回答 1

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();
   });
});
于 2011-01-01T07:45:40.953 回答