我无法理解特殊的 Javascript 事件场景。
有关插图,请参阅 http://jsfiddle.net/UFL7X/
当第一次单击黄色框时,我希望只有第一次单击事件处理程序被调用并且大框变为绿色。但是两个事件处理程序都被调用(大框变成红色),即使在点击发生时第二个处理程序不存在(至少我是这么认为的)。
这怎么解释呢?
最佳答案
所以发生的事情是你的事件在 dom 中冒泡。
- 点击发生在
div2
div2
调用点击函数- 改变
div1
的颜色 - 它将一个点击事件分配给
div1
div2
点击函数结束(隐含的return true
)- 事件冒泡到 DOM 中的父级
div1
接收冒泡点击事件div1
点击函数被调用
如果您不希望发生这种情况,则需要在 div2
的点击处理程序中返回 false
编辑:请注意,您组织 JS 的方式可能不是最好的,因为如果我点击 div2
100 次,这意味着 div1
现在有 100 个点击事件它将运行。
我建议你这样做(记住我不知道你的要求是什么):
$("#div2").click(function() {
$("#div1").css("background-color", "green");
return false;
});
$("#div1").click(function() {
$("#div1").css("background-color", "red");
});
关于javascript - 连续点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4812801/