jQuery .live mouseover错误输出

时间:2011-07-20 22:03:55

标签: jquery

我有一个无序列表(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错误吗?有没有人对此问题有任何见解?

2 个答案:

答案 0 :(得分:3)

来自the docs

  

不支持DOM遍历方法来查找要发送到.live()的元素。相反,应始终在选择器

之后直接调用.live()方法

这意味着您无法执行$("#menu").children().live(...),因为.children()是一种DOM遍历方法。

虽然语法错误表明代码本身存在问题,即格式不正确。因此问题在于您没有发布的代码。

最后,我建议您使用delegate

$('#menu').delegate('li', 'mouseover', function(){ ... });

虽然您确实应该进行静态绑定,除非您需要livedelegate功能。它不应该修复随机闪烁问题 - 你应该自己调试。

答案 1 :(得分:0)

如果您没有动态地将列表项插入DOM,我认为您不需要使用.live,因为您遇到的闪烁问题可能是因为mouseover气泡而不是你使用mouseenter就可以了......

$("#menu").children().bind("mouseenter",function(){
    // do something
});