我正在使用Jquery动态加载我的网站页面。基本上隐藏和显示div,具体取决于您单击的主菜单选项。
问题在于每页上的子菜单;页面更改时菜单会更改。我清空<ul>
并在每次更改页面时附加新的<li>
。
我有jquery悬停并单击与子菜单<li>
一起使用的功能,它们仅在页面刷新时才有效。这些函数似乎停止工作,因为我删除了<li>
然后添加新的函数。
我不明白为什么这些功能不只是转到新的<li>
。
为什么会这样?
答案 0 :(得分:1)
我遇到了同样的问题。 jQuery只能将事件绑定到加载jQuery脚本时存在的元素(页面加载)。为了使事件能够影响新创建的元素,您需要在代码中添加.live。 像这样:
$(".menu").live("hover", function(){
// your action here
});
有关此内容的更多信息,请访问http://api.jquery.com/live/ 我相信有一些额外的命令,比如.bind等做同样或类似的事情,但我总是使用.live 我希望有所帮助!
答案 1 :(得分:1)
新的,不推荐的方法是使用.on()
处理程序,从jQuery 1.7开始。如果您使用此版本而不是.live()
,请使用:
$('#menu').on('hover', 'li', function() { ... });
答案 2 :(得分:0)
根据我的理解,你的问题可能没有使用.live()方法..请参阅http://api.jquery.com/live/。当添加新的li时,DOM已经被加载,因此你的新li标签不符合附加.hover()或任何你想要的事件。这可能不是你想要的那样..但必须足够接近