2

我有一个应用程序,其中的项目可以包含子项目等。

每个项目都有一个 mouseDown 事件,我希望能够使用该事件来单击并选择一个项目。

问题是,当我单击子项时,也会调用父项 mouseDown 事件。

我如何停止这个,所以 mouseDown 事件只被调用一次,或者如果那不可能,我实际上希望在 mouseDown 事件中调用的函数只被调用一次。

这是一个非常简单地展示这一点的jsfiddle。http://jsfiddle.net/rmossuk/W9vmW/1/

如果您单击 no 单击此处,它的鼠标按下事件将被调用两次。

4

2 回答 2

3

你必须return false;在 mouseDown 函数中。

于 2012-08-16T12:11:53.593 回答
0

或者你可以使用 event.stopPropagation()。我更新了你的小提琴,见http://jsfiddle.net/W9vmW/2/

这里有更多关于 ember 中的事件冒泡如何工作的信息 - http://emberjs.com/guides/view_layer/#toc_event-bubbling

事件将在视图层次结构中冒泡,直到事件到达根视图。事件处理程序可以使用与普通 jQuery 事件处理程序相同的技术来停止传播:

从方法 event.stopPropagation 返回 false

于 2012-10-02T22:04:51.110 回答