阅读jQuery XII 删除事件的核心方法
什么?remove does正好与相反。添加前一篇文章中提到的。它对应于。一个一个添加,也就是有很多种方式在里面添加事件。添加。remove有相应的删除方式。remove定义了四个参数elem、types、handler、pos。从字面上看,这四个参数的含义很清楚。elem是HTMLElementtypes是String类型,事件名称如‘click’或‘mouseover mouseout’处理程序是Function类型,事件回调函数pos是Number类型,并且指定了数组位置,但是里面的。去掉就没那么简单了,比如1。Handler有时传递布尔类型false,此时handler将被分配给另一个函数(这里的处理与。添加)。复制的代码如下: if(handler===false){ handler=返回false;} 2、有时候类型就是一个对象,那么真正的处理程序就是types.handler和type就是types.type.复制的代码如下://types在这里实际上是一个事件对象if(types type。type){ handler=type。处理程序;types=types.type}我们知道变量命名要有意义,名副其实,避免误导。从这个意义上说,jQuery中有很多这样的写法,一个变量往往有多重含义,很难读懂。例如,这里的类型应该是字符串类型,但实际上,类型在内部被视为对象类型。这就是JS没有类型检查的原因。另一方面,这种语言将更加灵活,jQuery是如此紧凑和有凝聚力。少说话,看看有什么。移除方法已完成。1.当仅传输elem时,elem上添加的所有事件都将被删除。例如,$('#id ')。解除绑定()2。当类型为字符串并以点(。),该命名空间中的事件将被删除。如$('#id ')。解除绑定('。名称')。添加click.name、mouseover.name等。将被删除。对应的代码如下:复制代码如下://解除元素If(!type | | type of type==' string ' type . charat(0)===' . '){ types=types | |for(键入事件){ jQuery.event.remove(elem,type types);}返回;}我们发现for in是递归调用。如果这样调用jquery.event.remove (el,' click ',fn),就不会遵循上面的递归,而是直接进入while循环复制代码,如下所示: while((type=type[I])){ }.}这是删除事件的标准流程。步骤如下:1 .确定事件名称是否有命名空间(用点分隔),如果没有命名空间,则删除事件名称下的所有事件。否则,只删除命名空间中的一个事件。2.获取事件数组(eventType=events[ type])。如果没有传递处理程序,则意味着删除此类事件的所有处理程序;否则,将只删除此事件类型的指定处理程序。3.处理特殊事件(如直播)4。最后,处理elemData,如果events为空对象,则删除elemData的事件和handle属性。复制代码如下://删除不再使用的expando if(jquery。isempty对象(事件)){ varhandle=elemdata.handleif(handle){ handle . elem=null;}删除elemData.events删除elemData.handleif(jquery . isemptyobject(elemData)){ jquery . remove data(elem,undefined,true);}} jQuery事件管理数据结构图:。
版权声明:阅读jQuery XII 删除事件的核心方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。