美文网首页
jquery - 绑定事件on和bind的区别

jquery - 绑定事件on和bind的区别

作者: 方_糖 | 来源:发表于2020-10-16 10:48 被阅读0次
    1. on可以对动态创建的元素进行绑定,而bind不行

    如:
    对.btn进行绑定点击事件,点击.btn后会新增另一个.btn按钮

    <button class="btn">btn1</button>
    
    • 使用bind绑定
              $(".btn").bind("click",function(){
                    var newBtn = '<button class="btn">btnAdd</button>'
                    $("body").append(newBtn);
                })
    

    点击新增的btnAdd按钮后无法触发事件


    ZZ.gif
    • 使用on绑定
      使用on直接对元素进行事件绑定和bind的效果相同
              $(".btn").on("click",function(){
                    var newBtn = '<button class="btn">btnAdd</button>'
                    $("body").append(newBtn);
                })
    

    所以需要利用on的一个参数childSelector(可选)来实现

                //点击body中类名为btn的元素触发点击事件
                $("body").on("click",".btn",function(){
                    var newBtn = '<button class="btn">btnAdd</button>'
                    $("body").append(newBtn);
                })
    

    这样[图片上传中...(xx.gif-903844-1602815882681-0)]
    点击新增的btnAdd按钮后也可以触发事件


    xx.gif
    on()方法的语法与参数
    • 语法:
      $(selector).on(event,childSelector,data,function)
    • 参数:


      image.png
    bind()方法的语法与参数
    • 语法:
      $(selector).off(event,selector,function(eventObj),map)
    • 参数:


      image.png
    2.扩展:为绑定事件添加事件名
                //为.btn添加mousemove,mouseleave,mousedown事件
                $(".btn").bind("mousemove.doTest",function(e){
                    $(this).text("mouse move")
                }).bind("mouseleave.doTest", function(e){
                    $(this).text("mouse leave")
                }).bind("mousedown.doTest", function(e){
                    $(this).text("mouse down");
                    //取消.btn所有的绑定事件
                    $(".btn").unbind(".doTest")
                })
    

    为.btn添加mousemovemouseleavemousedown事件,所有事件的事件名为doTest。触发mousedown事件时,取消.btn所有名为doTest绑定事件(利用unbind(".doTest"))。

    yy.gif

    相关文章

      网友评论

          本文标题:jquery - 绑定事件on和bind的区别

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