2012-01-05 82 views
0

如何在执行子项时防止父项事件。这里是代码见注释防止来自子元素的事件缺省值

document.addEventListener('touchend', function (e) { 
    //Do something here 
}, false); 

someChildElement.addEventListener('touchend', function (e) { 
    //Do something here 

    //if this code block is executed then do-not execute the touchend event of document// 
}, false); 

回答

2

你可以在你的孩子的事件处理程序试试这个

event.stopPropagation() 

对于Internet Explorer,你应该使用

window.event.cancelBubble = true 
1

你有没有试图改变事件传播机制?

在“的addEventListener”方法的最后一个参数控制事件的传播。如果我们将其设置为false,则事件会冒泡,但如果我们将其设置为true,则捕获该事件,然后冒泡。因此,当我们将其设置为“真”时,“容器”在“孩子”之前接收事件,当我们将其设置为“假”时,孩子在容器之前接收事件。 简而言之,当我们将参数设置为'false'时,事件注册器从事件从'child'元素到其容器元素的内部元素开始。当我们将它设置为'true'时,事件注册器首先向下移动到容器元素,因为它是事件注册的第一个元素,从最外层元素遍历文档树,然后到达子元素。

然后你就可以使用event.stopPropagation从进一步遍历停止活动。

您可以了解更多关于它在这里MDN