事件代理

事件代理,让我们在父元素上绑定一个事件,它会响应孩子的点击事件。

// Attach a directly bound event handler
$( "#list a" ).on( "click", function( event ) {
    event.preventDefault();
    console.log( $( this ).text() );
});

事件冒泡

每次当我们点击一个anchor的时候,这个事件就会往上冒泡,触发下面的这些父元素

<a><li><ul #list><div #container><body><html>、document root

我们知道事件冒泡,那么我们可以创建一个代理事件:

// Attach a delegated event handler
$( "#list" ).on( "click", "a", function( event ) {
    event.preventDefault();
    console.log( $( this ).text() );
});

请看on函数的第二个参数,这个参数目的是告知点击的这个元素是否匹配指定的这个元素

两个好处

  • 性能上更好,避免创建太多的事件对象
  • 动态添加孩子的时候不用再去给它绑定事件

Understanding Event Delegation

results matching ""

    No results matching ""