避免使用嵌套ul / li的双重事件(onclick)

时间:2010-11-12 12:00:05

标签: javascript html css

我有一个两级ul / li菜单,其中li可以触发不同的onclick事件。

单击一个ul li ul项目时,似乎会触发父事件(ul li)。

我能否轻松避免这种情况。

(我正在考虑使用计时器来捕获第二个事件,但认为这是一个丑陋的修复......)

此致 / T

3 个答案:

答案 0 :(得分:8)

我想你必须停止事件冒泡 因此,如果您使用的是直接javascript,则可以event.cancelBubble = true

否则,如果您使用的是jQuery,则可以使用event.stopPropagation()event.stopImmediatePropagation()

http://api.jquery.com/category/events/event-object/

答案 1 :(得分:2)

找到适当的词来谷歌搜索并得到答案。 也许这就是你要找的东西。

Event propagation in Javascript

答案 2 :(得分:0)

代替event.stopPropagation()来考虑:

function myFunction() {
    if (event.myFunctionResolved == undefined) {
        event.myFunctionResolved = true;

        // your logic here
    }
}

这样做的好处是不会停止该事件,因此将执行可能正在监听该事件的其他脚本。