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