博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery事件绑定
阅读量:6407 次
发布时间:2019-06-23

本文共 2057 字,大约阅读时间需要 6 分钟。

先看看 jQuery事件绑定和JavaScript事件绑定的区别

为一个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() 即使后来动态生成的新元素也可自动获得父元素上的事件处理函数

 

转载于:https://www.cnblogs.com/lan-cheng/p/8414645.html

你可能感兴趣的文章
2018年最新人工智能书单,总有一本你爱的
查看>>
B2G编译前的准备
查看>>
糟糕的程序员有哪些招牌特质?
查看>>
[npm] 一个命令解决Unexpected end of JSON input... 问题
查看>>
HTTPS的实现及其原理
查看>>
Android Browser学习五 多窗口: Tab 整体结构
查看>>
PHP读取csv文件内容的方法详解
查看>>
jQuery装饰者模式绑定DOM事件
查看>>
Python术语表
查看>>
aar包 生成 以及相关处理
查看>>
使用kindeditor 实现 Play FrameWork的html编辑器
查看>>
marathon constraints 的花式用法
查看>>
Mac OSX 下 mysql 影响关系的问题处理
查看>>
JavaScript邮箱系统开发(二)
查看>>
【解决】Caused by: org.apache.tiles.definition.DefinitionsFactoryException: I/O
查看>>
发布karaf的features
查看>>
Android 多线程处理之多线程用法大集合
查看>>
属性动画总结(Property Animation)
查看>>
[转]Jboss 4 使用及安全配置
查看>>
DOS命令大全
查看>>