2024年10月jquerydelegate多次执行(delegate()多次绑定事件的问题)

 更新时间:2024-10-12

  ⑴jquerydelegate多次执行(delegate()多次绑定事件的问题

  ⑵delegate()多次绑定事件的问题

  ⑶我的感觉是你绑定了多次,那是你代码有问题,代码贴上来。我都用jQuery两年了。

  ⑷jqueryclick多次绑定,多次触发,怎么清除历史绑定事件

  ⑸jQuery的click绑定有多种,解除绑定的方式也不相同使用.bind()绑定事件,在.之后建议使用on,使用.unbind()解除绑定使用.live()绑定事件,使用.die()解除绑定使用.delegate()绑定事件,使用undelegate()解除如果不确定使用的是那种方式绑定的,那就都用上:.bind(“click“).die(“click“).undelegate(“click“)

  ⑹请简述jquery中事件绑定方法delegatebindlive的区别和优劣

  ⑺bind和on是一样的,bind是老方法,on是新方法,.以上才添加on方法,可作为bind替代,建议使用on方法。live在.以下已经剔除,不建议使用live方法。delegate可最为live替代方法,delegate可以绑定一个或者多个事件,on只能绑定一个事件

  ⑻jquery中的delegate函数有什么用

  ⑼delegate()函数用于为指定元素的一个或多个事件绑定事件处理函数。此外,你还可以额外传递给事件处理函数一些所需的数据。即使是执行delegate()函数之后新添加的元素,只要它符合条件,绑定的事件处理函数仍然对其有效。此外,该函数可以为同一元素、同一事件类型绑定多个事件处理函数。触发事件时,jQuery会按照绑定的先后顺序依次执行绑定的事件处理函数。要删除通过delegate()绑定的事件,请使用undelegate()函数。从jQuery.开始,请优先使用事件函数on()替代该函数。该函数属于jQuery对象(实例)。语法jQuery..新增该函数。其主要有以下两种形式的用法:用法一:jQueryObject.delegate(selector,events,handler)用法二:jQuery..新增支持该用法。jQueryObject.delegate(selector,eventsMap)参数参数描述selectorString类型一个jQuery选择器,用于指定哪些后代元素可以触发绑定的事件。如果该参数为null或被省略,则表示当前元素自身绑定事件(实际触发者也可能是后代元素,只要事件流能到达当前元素即可)。eventsString类型一个或多个用空格分隔的事件类型和可选的命名空间,例如“click“、“focusclick“、“keydown.myPlugin“。data可选/任意类型触发事件时,需要通过event.data传递给事件处理函数的任意数据。handlerFunctidelegate类型指定的事件处理函数。eventsMapObject类型一个Object对象,其每个属性对应事件类型和可选的命名空间(参数events),属性值对应绑定的事件处理函数(参数handler)。关于参数events中可选的命名空间,请参考最下面的示例代码。关于参数selector,你可以简单地理解为:如果该参数等于null或被省略,则为当前匹配元素绑定事件;否则就是为当前匹配元素的后代元素中符合selector选择器的元素绑定事件。参数handler中的this指向当前匹配元素的后代元素中触发该事件的DOM元素。如果参数selector等于null或被省略,则this指向当前匹配元素(也就是该元素)。delegate()还会为handler传入一个参数:表示当前事件的Event对象。参数handler的返回值与DOM原生事件的处理函数返回值作用一致。例如“submit“(表单提交)事件的事件处理函数返回false,可以阻止表单的提交。如果事件处理函数handler仅仅只用于返回false值,可以直接将handler设为false。返回值delegate()函数的返回值为jQuery类型,返回当前jQuery对象本身。重要说明:delegate()函数并不是为当前jQuery对象匹配的元素绑定事件处理函数,而是为它们的后代元素中符合选择器selector参数的元素绑定事件处理函数。delegate()函数并不是直接为这些后代元素挨个绑定事件,而是“委托“给当前jQuery对象的匹配元素来处理。由于DOM级的事件流机制,当后代元素selector触发事件时,该事件会在事件冒泡中传递给其所有的祖辈元素,当事件流传递到当前匹配元素时,jQuery会判断是哪个后代元素触发了事件,如果该元素符合选择器selector,jQuery就会捕获该事件,从而执行绑定的事件处理函数。示例&说明以点击事件(“click“)为例,以下是jQuery中事件函数的常规用法(某些函数也存在其它形式的用法,此处暂不列出)://这里的选择器selector用于指定可以触发事件的元素//这里的选择器ancestor应是selector的祖辈元素,selector触发的事件可以被其祖辈元素在事件流中捕获,从而以“代理“的形式触发事件。//jQuery.+(..+支持参数data)$(“selector“).click(handler);//jQuery.+(..+支持参数data)$(“selector“).bind(“click“,handler);//jQuery.+(.+支持参数data)$(“selector“).live(“click“,handler);//jQuery..+$(“ancestor“).delegate(“selector“,“click“,handler);//jQuery.+$(“ancestor“).on(“click“,“selector“,handler);请参考下面这段初始HTML代码:《divid=“n“》《pid=“n“》《span》CodePlayer《/span》《/p》《pid=“n“》《span》专注于编程开发技术分享《/spa对应的示例代码如下:varevents={“mouseenter“:function(event){$(this).html(“你好!“);},“mouseleave“:function(event){$(this).html(“再见!“);}};//为n绑定mouseentermouseleave两个事件,并为其传入附加数据data$(“body“).delegate(“#n“,events);

  ⑽jquery的delegate可以绑定几层元素的事件

  ⑾说下我的想法,不知道对不对,感觉delegate是继承的关系,只在初始化的时候在body中对对应的元素进行事件继承,find是驱动型的,是主动去寻找当前元素,然后给绑定事件,所以动态生成的在初始化的时候无法继承对应的事件,而find是现找,所以能绑定事件,不知道这么说对不对

  ⑿jquery中的delegate函数有什么作用

  ⒀$(“p“).delegate(“body“,“click“,function(){alert(“P元素的CLICK事件!“);});这个代码的意思是向Body元素下面的已有P元素以及未来被添加到body的P元素添加click事件。$(“body“).append(“《p》后追加的p元素《/p》“);此时这个被添加的p元素也会被绑定上之前代码上的那个click事件,不必再手动绑定。但是本人并不推荐用delegate的方式给元素绑定事件处理函数,他的原理是在body(参数第一个传的是啥就是啥绑定click(第二个参数传的是啥就是啥事件,然后判定触发当前click的事件是否符合当前绑定的选择器(即代码示例中的$(“p“),如果符合,再回调你的click函数。也就是说这个方式绑定的click事件并非是直接绑定到p(代码写的是啥就是啥元素上的,而是body上的,性能差,一旦用这种方式给种dom绑定click事件,那么他肯定会有一个队列保存这种选择器,当你触发一个click事件时会用一个循环去判断是否满足这种dom中的具体哪一种而后再回调具体的事件处理函数。而且还有个问题就是他有些事件并不支持这样绑定。所以除了万不得已不推荐这样写。

  ⒁jQuery事件绑定方法bind,live,delegate和on的区别

  ⒂bind是用来绑定一个或多个事件的,live其实bind的一个加强版,用来绑定通过JavaScript或者jQuery添加的DOM元素事件,其语法结构是一样

  ⒃$(“p“).bind(“mouseenter?mouseleave“,function(){alert(“ok“);})$(“p“).live(“mouseenter?mouseleave“,function(){alert(“ok“);})

  ⒄delegate用于事件委托,也是绑定过JavaScript或者jQuery添加的DOM元素事件。

  ⒅$(“div“).delegate(“p“,“click“,function(){alert(“p“);})

  ⒆点击div下面的P执行alert;

  ⒇而on是在.之后新增的,是把bind,live,delegate全部合并在一起了,

  ⒈$(“div“).on(“click“,“p“,function(){alert();})

  ⒉不需要事件委托的时候把P去掉就会变成点击div触发了。

  ⒊个人建议根据版本来使用,语法其实都差不多,如果你是用.版本以上就建议用on,毕竟bind,live,delegate这些将来都会遗弃了,如有错误,请指出。顺便吐槽一下楼上的回答,不走心啊

  ⒋jquerydelegate可以一下委托多个

  ⒌可以参考下jq的帮助文档

  ⒍您可以采用链式的写法达到一样的效果啊:

  ⒎$(“#xx“).delegate(’.xxx’,?’mouseenter’,?function(){//.....}).delegate(’.xxx’,?’mouseout’,?function(){//.....})使用bind也可以绑定多个事件的:$(document).bind(’mouseover?mouseout?mousemove’,?function(event)?{......});

  ⒏JQ帮助文档里是这样写的

  ⒐$(selector).delegate(childSelector,event,data,function)event???规定附加到元素的一个或多个事件。由空格分隔多个事件值。必须是有效的事件。

  ⒑既然可以绑定多个事件,如果没效果那就看看你绑定的事件是否重复了,比如mouseenter和click就已经重复了。还有一个重点的就是你要指定一个确定的div?id来绑定事件而不是document.这个方法本身就是为了不让事件冒泡到document上增加执行效率

  ⒒jQuery的delegate怎么绑定多个事件

  ⒓$(“table“).delegate(“td“,“clickmouseovermouseoutmousedown“,function(){});空格隔开即可。

您可能感兴趣的文章:

相关文章