我的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'
答案 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的一个错误,它在使用一次之后解除了事件的绑定。