• jQuery中bind,live,delegate,on的区别


    bind(),live()都是调用on()函数,只不过传递的参数不同。

    一、$(selector).bind(event,data,fn);

    $('#J_btn').bind('click',function(){
      //直接绑定在指定元素上
      //只能针对已经存在的元素进行事件的设置
    });

    二、$(selector).live(event,data,fn);

    $('#J_btn').live('click',function(){
      //委托,绑定在父元素上,父元素只能是document
      //live可以实现动态绑定
      //通过冒泡的方式来绑定到元素上
      //支持未来新添加元素的事件设置
    });

    三、$(selector).delegate(childSelector,event,data,fn);

    $("#J_btn").delegate("J_btn_left","click",function(){
      //委托,绑定在父元素上,父元素可以是任意的祖先节点
      //delegate可以实现动态绑定
      //通过冒泡的方式来绑定到元素上
      //支持未来新添加元素的事件设置
    });

    四、$(selector).on(event,childselector,data,fn);

    $("#J_btn").on("click","J_btn_left",function(){
      //支持未来新添加元素的事件设置
    });

    jQuery推出on()的目的有2个,一是为了统一接口,二是为了提高性能,所以从现在开始用on()替换bind(), live(), delegate()吧。尤其是不要再用live()了,因为它已经处于不推荐使用列表了,随时会被干掉。如果只绑定一次事件,那接着用one()吧,这个没有变化。bind()支持Jquery所有版本;live()支持jquery1.8-;delegate()支持jquery1.4.2+;on()支持jquery1.7+。
    五、事件处理
    1、单事件处理

    $(selector).on("click",data,fn);

    2、多事件处理

    A、利用空格分割多事件

    $(selector).on("click dbclick mouseout",childselector,data,fn);

    B、利用大括号灵活定义多事件

    $(selector).on({
        event1:fn,
        event2:fn,
        ...
    });

    C、链式绑定事件

    $(selector)
    .on("click",childselector,data,fn)
    .on("dbclick",childselector,data,fn)
    .on("mouseout",childselector,data,fn);

    unbind(),die()和undelegate()方法也合并成了off()方法。

  • 相关阅读:
    wsl手动启动特定的子系统
    winserver安装wsl
    wsl子系统下载地址-补充centos7地址
    wsl (1)-含wsl子系统各启动命令
    win10系统版本说明
    zenith 以及海康 rtsp流
    shinobi (4)
    ffmpeg
    CF993A Two Squares 几何 第二道 暴力或判断条件(*)
    CF994B Knights of a Polygonal Table 第一道 贪心 set/multiset的用法
  • 原文地址:https://www.cnblogs.com/camille666/p/jquery_bind_live_delegate_on.html
Copyright © 2020-2023  润新知