Facebox只能使用一次

时间:2011-02-03 11:08:49

标签: javascript jquery facebox

我的Facebox绑定请求文档在Facebox网站上的说明。

但是点击其中一个div.com后,Facebox请求再次无效。

我正在使用的代码就在下方,而我的错误则更进一步。

$(document).ready(function() {
    $('.comment').bind('click', function() {
        $.facebox({ajax: '/project/cake_app/comment/tweets/' + $(this).attr('id')});
    }); 
});

错误:

Uncaught TypeError: Object function (a,b){return new d.fn.init(a,b,g)} has no method 'facebox'

4 个答案:

答案 0 :(得分:3)

Kim建议用live()替换bind()的原因不起作用是因为问题不是原始的click事件处理程序丢失了。

如错误所示:

Uncaught TypeError: Object function (a,b){return new d.fn.init(a,b,g)} has no method 'facebox'

问题是jQuery $对象丢失了.facebox()方法。当您在面板中加载jQuery INSAC时,Facebox可以正常关闭并重新打开窗口。在加载了facebox之后,重新初始化jQuery,因此当jQuery重新初始化时,facebox没有机会将自己重新添加到jQuery $对象。

我通过从facebox中加载的代码中删除jQuery来解决这个问题。如果jQuery已经加载到主页面上,那么它就在环境中,并且不需要在facebox代码中再次加载它。如果您在主页面和facebox内部的代码中依赖jQuery,这只是一个问题。我想如果你必须在facebox中再次加载jQuery,你可以使用jQuery.noConflict()来使用一个单独的实例。

答案 1 :(得分:2)

您是否尝试使用live:

$(document).ready(function() {
    $('.comment').live('click', function() {
        $.facebox({ajax: '/project/cake_app/comment/tweets/' + $(this).attr('id')});
    }); 
});

答案 2 :(得分:1)

$(document).ready(function() {
    $('.comment').bind('click', function() {
        $.facebox({ajax: '/project/cake_app/comment/tweets/' + $(this).attr('id')});
$(".comment").unbind('click');
    }); 
});

希望它有效

答案 3 :(得分:1)

我通过从Facebox切换到Fancybox解决了我的问题,看来他们是Facebox的一个错误,它在使用一次之后解除了事件的绑定。