jQuery事件绑定

lan-cheng 2018-02-04 原文

jQuery事件绑定

为一个id为Mydiv的元素添加多个事件

用JavaScript原生添加事件如下:

 

var btn = document.getElementById("Mydiv");
btn.onclick = function(){
	alert(1);
}
btn.onclick = function(){
	alert(2);
}

 

执行上面的代码只会alert 2 

用 jQuery 添加事件如下:

$btn = $(“#Mydiv”)
$btn.click(function(){
  alert(“1”);
})
$btn.click(function(){
  alert(“2”);
})

执行上面的代码会先alert 1 再 alert 2 。再看下面

$(“#Mydiv”).on(“click”,function(){
  alert(1);
}).on(“click”,function(){
  alert(2);
});

执行上面的代码会先alert 1 再 alert 2

以上可以说明 jQuery 中的事件绑定具有叠加性,JavaScript原生的事件绑定则是可覆盖的。

那么 jQuery 中事件绑定方式有几种?

方式一 <bind>:  绑定: $(selector).bind(“事件名”,data,function)

        解绑: $(selector).unbind(“事件名”,handler)

$(“#Mydiv”).bind(“click”,function(){
  alert(“1”);
 }).bind(“click”,function(){
  alert(“2”);
 });

还可以这样:

$(“#Mydiv”).bind({
 click:function() {
  console.log(“疼”)
 },
 mouseenter:function() {
      console.log(“鼠标进入”)
 },
mouseleave:function(){
  console.log(“鼠标离开”)
}
});

方式二 <one>:  $(“选择器”).one(“事件名”,function) 只能触发一次,触发后,自动解绑

$(“#Mydiv”).one(“mouseenter”,function(){
  $(this).css(“background”,”red”)
}).one(“click”,function(){
  $(this).css(“background”,”yellow”)
});

方式三 <delegate> : 绑定: $(“父元素”).delegate(“子元素”,”事件名”,function);

          解绑: $(selector).undelegate(“事件名”,handler)

就是可以为一个或多个子元素绑定事件

$(“ul”).delegate(“li”,”click”,function(e){
$(this).css(“background”,”red”);
})

方式四 <on> : 绑定: $(“选择器”).on(“事件名”,”选择器”,function)

        解绑: $(selector).off(“事件名”,handler)

$(document).on(“click”,”a”,function(){

  $(this).css(“background”,”#000″)
}).on(“click”,”p”,function(){
  $(this).css(“background”,”yellow”)
}).on(“click”,”h1″,function(){
  $(this).css(“background”,”red”)
});

还可以这样:

$(document).on(“click”,function(){
  $(“a”).css(“background”,”#000″)
}).on(“click”,function(){
  $(“p”).css(“background”,”yellow”)
}).on(“click”,function(){
  $(“div”).css(“background”,”red”)
});

不同之处有?

绑定位置 :
.bind() 直接绑在目标元素(子元素)上
.delegate() 绑在父元素上

事件监听的个数:
.bind() 导致事件监听个数增多
.delegate() 始终只有一个监听

未来子元素:

bind() 无法让动态生成的新元素自动获得事件处理函数

.delegate() 即使后来动态生成的新元素也可自动获得父元素上的事件处理函数

 

posted on 2018-02-04 22:28 慕城蓝就 阅读() 评论() 编辑 收藏

 

 
版权声明:本文为lan-cheng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lan-cheng/p/8414645.html

jQuery事件绑定的更多相关文章

  1. jQuery事件绑定

     参考 https://www.jb51.net/article/96248.htm   个人理解:bind: […]...

随机推荐

  1. 通知实战 设置通知图片(IOS10以后的)

    解释两个基本扩展(Notification Content、Notification Service) Not […]...

  2. 驱动&报错问题解决-ROM定制开发教程

    Windows7系统对驱动程序的使用要求有数字签名,禁用驱动程序签名可以避免刷机驱动感叹号导致无法刷机的问题。 […]...

  3. 分布式存储单主、多主和无中心架构的特征与趋势

    分布式对象存储和分布式文件系统具有很强烈的对比性 分布式对象存储是key/value的存储模式,以restfu […]...

  4. iOS快捷代码块

    //数据请求 /**<#封装数据请求(只适用本人)#>*/   NSString * reques […]...

  5. Spring 中使用Quartz实现任务调度

    Spring 中使用Quartz实现任务调度 Spring Quartz 定时任务   前言:Spring中使 […]...

  6. 201771030120-王嫄 实验二 个人项目—《西北师范大学学生疫情上报系统》项目报告 – 小王和尚

    201771030120-王嫄 实验二 个人项目—《西北师范大学学生疫情上报系统》项目报告 项目 内容 课程班 […]...

  7. 初学者应该怎么学习前端?web前端的发展路线大剖析! – 王郝

    初学者应该怎么学习前端?web前端的发展路线大剖析! 写在最前: 优秀的Web前端开发工程师要在知识体系上既要 […]...

  8. ASP.NET Core 3.x 并发限制

    前言 Microsoft.AspNetCore.ConcurrencyLimiter AspNetCore3. […]...

展开目录

目录导航