我有一个无序列表(UL),我正在尝试使用.live()绑定列表项(LI)子项上的mouseover / mouseenter事件,但不断收到以下JavaScript错误:
Error: uncaught exception: Syntax error, unrecognized expression: )
这是我的代码:
<ul id="menu">
<li>option 1
<ul>
<li>sub-option A</li>
<li>sub-option B</li>
<li>sub-option C</li>
<li>sub-option D</li>
<li>sub-option E</li>
</ul>
</li>
<li>option 2</li>
<li>option 3</li>
</ul>
jQuery代码:
$("#menu").children().live("mouseover", function(){
// do something
});
疯狂的是,当我更改为.mouseover()函数时,除了.mive(“mouseover”,...)修复的与.mouseover()相关的闪烁问题外,它的工作正常。 / p>
我在这里做错了吗?这是一个jQuery错误吗?有没有人对此问题有任何见解?
答案 0 :(得分:3)
来自the docs:
不支持DOM遍历方法来查找要发送到.live()的元素。相反,应始终在选择器
之后直接调用.live()方法
这意味着您无法执行$("#menu").children().live(...)
,因为.children()
是一种DOM遍历方法。
虽然语法错误表明代码本身存在问题,即格式不正确。因此问题在于您没有发布的代码。
最后,我建议您使用delegate
:
$('#menu').delegate('li', 'mouseover', function(){ ... });
虽然您确实应该进行静态绑定,除非您需要live
或delegate
功能。它不应该修复随机闪烁问题 - 你应该自己调试。
答案 1 :(得分:0)
如果您没有动态地将列表项插入DOM,我认为您不需要使用.live
,因为您遇到的闪烁问题可能是因为mouseover
气泡而不是你使用mouseenter
就可以了......
$("#menu").children().bind("mouseenter",function(){
// do something
});