美文网首页
jQuery中绑定事件时bind和on的区别

jQuery中绑定事件时bind和on的区别

作者: 小m_up | 来源:发表于2017-08-07 19:34 被阅读672次

    jquery的bind跟on绑定事件的区别:主要是事件冒泡
    jquery文档中bind和on函数绑定事件的用法:

    .bind(events [,eventData], handler)
    
    .on(events [,selector]  [,data], handler)
    

    .on方法比.bind方法多一个参数selector.onselector参数是筛选出调用.on方法的dom元素的指定子元素,由于JavaScript的事件冒泡特性,如果我们在父元素上注册了一个事件处理函数,当子元素上发生这个事件的时候,父元素上的事件处理函数也会被触发。如果使用on的时候,不设置selector,那么on与bind就没有区别了。
    请看如下代码:

     <ul>
            <li id="li1">1</li>
            <li id="li2">2</li>
    </ul>
    

    当没有selector时使用.bind.on

     $('ul').bind('click', function () {    // 等同于$('ul').on('click', function () {
            console.log($(this).text());
    });
    

    那么结果为:


    当有selector时,
     $('ul').on('click','#li1', function () {   
            console.log($(this).text());
    });
    

    点击1显示1,点击2就没有反应了
    还有一点,on绑定的事件处理函数,对于未来新增的元素一样可以,但是bind就不行,看下面的代码:

     $('ul').on('click','li', function () {   
            console.log($(this).text());
    });
    $('ul').append('<li>3<li>');
    

    此时,点击3可以显示出3

     $('ul li').bind('click', function () {   
            console.log($(this).text());
    });
    $('ul').append('<li>3<li>');
    

    此时,点击3就显示不出来了

    相关文章

      网友评论

          本文标题:jQuery中绑定事件时bind和on的区别

          本文链接:https://www.haomeiwen.com/subject/gxealxtx.html