2

我正在尝试将 jquery facebox 插件与实时事件(官方实现,而不是插件)一起使用。

我的主页通过 ajax 加载到一个页面中。该远程页面还具有指向我想在弹出对话框中显示的其他远程页面的链接。为此,我一直在使用 facebox 插件。

下面的代码不起作用,只是将远程页面加载到视口中一个新页面,而不是弹出窗口。

<script type="text/javascript">
            jQuery(document).ready(function($) {

                $('a[rel*=facebox]').live("click", function() {
                    $('a[rel*=facebox]').facebox()
                });
            });
          </script> 

这是使用现场活动的正确方法吗?

遗憾的是,我的开发机器只包含 IE6 [:(],所以我不能使用 firebug 来调试代码。

4

3 回答 3

6

用 fabrik 评论补充 Kobi 的答案:

$('a[rel*=facebox]').live("mousedown", function() { 
    $(this).unbind('click'); //everytime you click unbind the past event handled.
    $(this).facebox();
});

因此,您可以防止 facebox 增加事件。

归功于科比。

于 2011-01-19T15:50:35.743 回答
4

我想这个click事件已经太晚了,无法启动 facebox。
这可能适用mousedown(在我的测试中似乎没问题,但并不完全相同)

$('a[rel*=facebox]').live("mousedown", function() { 
    $(this).facebox(); // this should do, you don't need all links
});

我也会推荐这个。我建议在完成 AJAX 调用后激活 facebox:

// sample code - you might use an other AJAX call
$('#dynamicDiv').load('...', {}, function(){
    $('#dynamicDiv a[rel*=facebox]').facebox();
});
于 2009-10-13T11:58:16.663 回答
1

非常感谢,我遇到了麻烦,因为在加载我的动态内容后,rel=facebox 似乎根本不起作用

我只是“重新激活”

jQuery(document).ready(function($) { $('a[rel*=facebox]').facebox() })

在ajax.response 和voilá 之后,我可以看到弹出的facebox 而不是链接中的页面。

非常感谢科比。

于 2009-11-11T15:04:10.690 回答