javascript - DOM 事件 API : event delegation and stopPropagation

标签 javascript jquery jquery-events

这是 jQuery 1.7 的代码:

<div class="test">
  <div class="bu">
    <a>
      bu here
    </a>
  </div>
</div>
<script src="http://code.jquery.com/jquery-1.7.js"></script>
<script>
$(document).on('click', '.test', function () { alert(0); return false; });
$(document).on('click', '.bu', function () { alert(1); return false; });
$(document).on('click', '.bu', function () { alert(2); return false; });
</script>

Xlicking on .test > .bu 会提示“1”和“2”,但不会提示“0”

我的问题是:如何在没有 jQuery(在 native DOM API 上)的情况下做同样的事情?似乎,如果不实现我自己的库,我就无法使用 Native DOM API 来完成...

最佳答案

给你:

document.addEventListener( 'click', function ( e ) {
    if ( hasClass( e.target, 'bu' ) ) {            
        // .bu clicked
        // do your thing
    } else if ( hasClass( e.target, 'test' ) ) {
        // .test clicked
        // do your other thing
    }   
}, false );

hasClass

function hasClass( elem, className ) {
    return elem.className.split( ' ' ).indexOf( className ) > -1;
}

现场演示: http://jsfiddle.net/Nrxp5/30/

关于javascript - DOM 事件 API : event delegation and stopPropagation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8162883/

相关文章:

javascript - [未处理的 promise 拒绝 : TypeError: undefined is not an object (evaluating 'this.state.result.map' )]

javascript - 如何使用div在javascript中显示当前月份,年份

javascript - 如何用 Protractor 计算不可见的项目

javascript - 通过指针调用带参数的 JavaScript 函数?

javascript - JQuery Mobile 滑动 .load .prev 和 .next

javascript - JavaScript 文件 404(未找到)

jquery - 如何使用 jQuery 使阴影闪烁?

jquery - 如何链接到段落内的文本

JQuery 自动完成不缩小范围

javascript - jQuery UI 自动完成在右键单击时保持打开状态