首页 > 其他分享 >jquery 事件绑定及取消 bind live delegate on one区别 (超详细且通俗易懂)

jquery 事件绑定及取消 bind live delegate on one区别 (超详细且通俗易懂)

时间:2022-10-17 17:05:35浏览次数:71  
标签:jquery function bind 绑定 event live 事件 click


on bind delegate live one 四种方法差别不是特别大 bind讲完后,后面的方法只会说不同点

1.bind()

$(selector).bind(event,data,function,map)

event

必需。规定添加到元素的一个或多个事件。


由空格分隔多个事件值。必须是有效的事件。

data

可选。规定传递到函数的额外数据。

function

必需。规定当事件发生时运行的函数。

map

规定事件映射 ({event:function, event:function, ...}),包含要添加到元素的一个或多个事件,以及当事件发生时运行的函数。

最简单的写法 绑定单个事件执行事件函数,

$("p").bind("click",function(){
alert("这个段落被点击了。");
});

这样写跟普通的写法没区别  就没必要使用绑定事件方法了

obj.click(function(){})

注:js同一个dom元素多次绑定同一事件,只会执行最后一次的事件,所以如果有这种需求,需要使用addEventListener方法添加事件,jquery则不会 它会全部执行,两者都是同时执行,并不是按顺序一一执行。

bind()方法可以进行多个事件绑定,添加回调函数,

$(document).ready(function(){
$("p").bind("mouseover mouseout",function(){
$("p").toggleClass("intro");
});
});

两个事件分别执行一次函数内容,如果要事件单独执行各自的函数 可以使用map映射(分开写)的方法,就可以各自执行了,

$(document).ready(function(){
$("button").bind({
click:function(){$("p").slideToggle();},
mouseover:function(){$("body").css("background-color","#E9E9E4");},
});
});

或者添加多个事件后 ,函数使用event.type来判断是哪一个事件来进行各自的函数内容。

$(document).ready(function(){
$("p").bind("click dblclick mouseover mouseout",function(e){
if(e.type == 'click'){
alert('这是click事件')
}else if(e.type == 'dblclick'){
alert('这是dbclick事件')
}
});
});

data是可选的额外添加的数据,函数中可以用event.data接受使用。

$(document).ready(function(){
$("p").bind("click", {msg: "你刚点击了!"}, function handlerName(e){
alert(e.data.msg); })
});

取消绑定用 unbind()方法

$("button").click(function(){
$("p").unbind(); //取消p标签所有绑定的事件
});
unction alertMe()
{
alert("Hello World!");
}
$(document).ready(function(){
$("p").click(alertMe);
$("p").click(function(){
alert(123)});
$("button").click(function(){
$("p").unbind("click",alertMe); //将p标签单击调用alertMe的事件取消
});
});
$(document).ready(function(){
var x=0;
$("p").click(function(e){
$("p").animate({fontSize:"+=5px"});
x++;
if (x>=2)
{
$(this).unbind(e); //还可以通过取消参数 来接触事件
}
});
});

2.live()

event

必需。规定添加到元素的一个或多个事件。


由空格分隔多个事件值。必须是有效的事件。

data

可选。规定传递到该函数的额外数据。

function

必需。规定当事件发生时运行的函数。

和bind方法有两个不同

1.没有map不能单独规定事件

2.live方法绑定的事件会应用于当前现有的元素以及未来元素,也就是事件委托机制,把节点的处理统一委托给了根节点document,所以后面动态添加的新节点同样会有相同的事件。

$("button").live("click",function(){
$("p").slideToggle(); //给所有的p节点添加了收缩事件,包括动态添加的新的p标签
});

注:使用live()方法只能放在直接选择的元素后面,不能在层级比较深,连缀的DOM遍历方法后面使用,即$(“ul”").live...可以,但$("body").find("ul").live...不行; 

取消绑定用die()方法 跟unbind()一样。

3.delegate ()

$(selector).delegate(childSelector,event,data,function)

childSelector

必需。规定要添加事件处理程序的一个或多个子元素。

event

必需。规定添加到元素的一个或多个事件。


由空格分隔多个事件值。必须是有效的事件。

data

可选。规定传递到函数的额外数据。

function

必需。规定当事件发生时运行的函数。

这个方法就相当于加强版的live()方法,由于live方法事件委托会直接委托在根节点上,费时费力,

于是就有了delegate()方法,它可以选择委托范围,就是给selector父节点内的所有childSelector子节点绑定事件。

$(document).ready(function(){
$("div").delegate("p","click",function(){ //给div里的p标签绑定事件
$(this).slideToggle();
});
$("button").click(function(){
$("<p>这是一个新段落。</p>").insertAfter("button");//动态添加的新标签会保留事件
});
});

undelegate()取消绑定事件

4.on()

究极进化的产物,集前面三位所长为一身,也是最推荐用的,在版本更新迭代中,前面三位有的无了。

$(selector).on(event,childSelector,data,function)   和delegate书写顺序不同 这个on要先写事件

event

必需。规定要从被选元素添加的一个或多个事件或命名空间。


由空格分隔多个事件值,也可以是数组。必须是有效的事件。

childSelector

可选。规定只能添加到指定的子元素上的事件处理程序(且不是选择器本身,比如已废弃的 delegate() 方法)。

data

可选。规定传递到函数的额外数据。

function

可选。规定当事件发生时运行的函数。

它既可以给单个标签绑定事件,有map映射,也可以自主选择事件委托对象给后面动态创建的节点绑定事件。

取消绑定事件的方法是off()

这里就不做演示了 跟上面的大同小异,大家赶快去试试吧!

5.one()

$(selector).one(event,data,function)

event

必需。规定添加到元素的一个或多个事件。


由空格分隔多个事件值。必须是有效的事件。

data

可选。规定传递到函数的额外数据。

function

必需。规定当事件发生时运行的函数。

one()方法相当于bind区别是one只执行一次,就会自动解除事件.

$(document).ready(function(){
$("p").one("click",function(){
$(this).animate({fontSize:"+=6px"});
});
});

标签:jquery,function,bind,绑定,event,live,事件,click
From: https://blog.51cto.com/u_15830125/5763580

相关文章

  • jquery animate()方法 动画详解(超简单易懂)
    jqueryanimate动画详解(超简单易懂)animate()方法是jquery里的动画效果,通过修改css相关属性,在规定时间内,值是不断变化的从而形成了一种动画的效果。(selector).animate({style......
  • jquery 节点的删除
    1.remove()2.detach()3.empty()1.remove()remove()方法移除被选元素,包括所有的文本和子节点,以及数据和事件。$(function(){$('ul').remove()})<ulclass="5......
  • jquery鼠标移入移出事件显示div
    <liclass="active"><divclass="PartR"></div></li><scripttype="text/javascript">$(function(){//显示隐藏varcolor......
  • 直播带货源码,HTML + jQuery 实现轮播图
    直播带货源码,HTML+jQuery实现轮播图HTML页面部分1、首先创建可视窗口添加6张图片,添加CSS样式 2、添加左右切换按钮,设置样式 3、添加图片导航器,设置样式,添加悬......
  • JQuery .nextAll()
    https://www.jquery123.com/nextAll/ 获得每个匹配元素集合中所有下面的同辈元素,选择性筛选的选择器。如果一个jQuery对象代表了一组DOM元素,.nextAll()方法允许我们在D......
  • jQuery的.attr()方法
    https://blog.csdn.net/weixin_42648692/article/details/86294123attr()方法是jQuery操作属性的一个方法。可以根据参数的不同,来获取或设置属性值。.attr()方法常用的四......
  • QFramework v1.0 使用指南 架构篇:17. 内置工具:BindableProperty
    在此篇介绍BindableProperty。BindableProperty提供数据+数据变更事件的一个对象。基本使用usingUnityEngine;namespaceQFramework.Example{publiccla......
  • 【go】golang tcp keepalive实践
    前文中已经介绍了TCPkeepalive的做了详尽说明,本文结合golang,介绍如何使用TCPkeepalive。目前golangnet包不提供TCPkeepalive空闲多长时间开始探测、探测总次数直......
  • jquery里面的样式操作
    一、jquerycss样式操作方法<body><div></div>  </body><script>  $(function(){   //操作样式之css方法   // console.log($('div').c......
  • QFramework v1.0 使用指南 架构篇:07. 使用 BindableProperty 优化事件
    在这篇我们介绍一个新的概念BindableProperty。BindableProperty是包含数据+数据变更事件的一个对象。BindableProperty基本使用简单的用法如下:varage=new......