我有一个jQuery,每当文档准备就绪时,将带有处理程序的悬停事件绑定到具有class="widget-box"
的元素。问题是,一旦文档准备就绪,悬停事件处理程序就会被绑定,但是当用户单击页面上的按钮时,会使用ajax以便重新加载页面的一部分,然后文档就绪会导致悬停事件被绑定再次对同一个元素。我不希望发生此行为,只希望将悬停事件绑定一次。我试图取消绑定hover(),只要使用unbind('mouseenter')和unbind('mouseleave')再次调用文档就绪,但不知何故,这不能删除已经绑定的悬停。有没有人对如何解决这个问题有任何想法?
谢谢!
答案 0 :(得分:1)
你可能做错了什么。这样做:
$(".widget-box").unbind('mouseenter mouseleave').bind('hover', ...);
希望这会有所帮助。干杯
答案 1 :(得分:-1)
尝试使用.live()方法:)
获得资格:
为什么要加载两次相同的JavaScript?如果您只加载一次,并使用.live而不是.hover,您仍然可以将事件附加到相关元素,而无需再次运行js。
编辑:
您是否考虑过将代码包装成以下内容:
if(document.myScriptIsLoaded!=true){
document.myScriptIsLoaded=true;
//put your document ready here
}