拔掉头发2小时后,我仍然找不到冲突。请帮助我解决此问题。我正在使用http://www.dynamicdrive.com/dynamicindex17/ajaxtabscontent/ajaxtabs_suppliment3.htm为我的网站创建 ajax 选项卡,并为模态窗口使用http://defunkt.io/facebox/。但是,当我尝试通过 ajax 选项卡加载 Facebook 链接时,它不会将内容加载到 Facebook 中。但它适用于 ajax 选项卡之外的任何链接。任何的想法?
问问题
239 次
1 回答
2
这仅仅是因为您加载到 DOM 中的任何新内容都不会附加任何先前设置的事件处理程序。
因此,在这种情况下,您的 facebox 插件会在新内容加载到 ajax 选项卡之前进行初始化。因此,本质上,facebox 插件并不知道这些新链接的存在。
答案是在加载新内容后重新初始化插件。
所以你需要打电话: -
$('a[rel*=facebox]').facebox()
...再次,一旦新的 ajax 选项卡内容被加载到 DOM 中。通过对 ajax 选项卡脚本的简要了解,我想您可以通过简单地重新初始化 facebox 插件(如上所示)来轻松解决这个问题,方法是将该行添加到每次将任何新内容加载到 ajax 选项卡时都会调用的函数中。
或者(更简单)您可以使用 jQuery livequery 插件初始化 facebox 插件
使用此代码(一旦您在您的网站上包含 livequery 脚本:-
$('a[rel*=facebox]').livequery(function() {
$(this).facebox();
});
Livequery 会在新加载的 Facebook 链接添加到 DOM 时自动检测它们,并为您应用 Facebook 插件。
编辑:
如果这仍然没有达到预期的效果(虽然我真的不明白为什么当我以前使用它时不作为实时查询是一个梦想)尝试这个肮脏的小技巧,每次你按下鼠标时都可以取消绑定和重新绑定 facebox。在任何新的或旧的 Facebook 链接上。
$('a[rel*=facebox]').live("mousedown", function() {
$(this).unbind('click'); //everytime you click unbind the past event handled.
$(this).facebox();
});
于 2011-12-07T00:14:17.963 回答