jQuery学习-事件之绑定事件(七)

今天来说说事件中的handlers方法中的一个片段

1 matches[ sel ] = handleObj.needsContext ?
 2     jQuery( sel, this ).index( cur ) >= 0 :
 3     jQuery.find( sel, this, null, [ cur ] ).length;
 4 /*
 5  这是handler是方法中过滤委托的方法。等价于
 6 if(handleObj.needsContext){
 7     matches[ sel ] = jQuery( sel, this ).index( cur ) >= 0;
 8        这句语句的意思是:
 9          在this(这里是被绑定委托方法的元素)元素中查找sel(selector)表达式的元素,
10          这里返回的是数组,然后在结果数组中查找cur(触发事件元素),返回其索引值。 
11          如果大于-1为true反之false;
12 }else{
13     matches[ sel ] = jQuery.find( sel, this, null, [ cur ] ).length;
14       这句语句的意思是在this元素中查找符合sel表达式的元素,同时该元素存在与[cur]这个数组中,
15       返回数组的长度。
16 }
17  那handleObj.needsContext又是什么,请接着看下去......
18  handleObj.neddsContext是出现在jQuery事件add方法中的,如下:      
19 */
20 
21 handleObj = jQuery.extend({
22                 type: type,//事件类型名称
23                 origType: origType,//事件类型名称
24                 data: data,//自定数据
25                 handler: handler,//事件
26                 guid: handler.guid,//事件的guid
27                 selector: selector,//委托的selector
28                 needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
29                 /*
30                  jQuery.expr.mathc.needsContext = 
31                      /^[\x20\t\r\n\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\([\x20\t\r\n\f]*((?:-\d)?\d*)[\x20\t\r\n\f]*\)|)(?=[^-]|$)/i
32                  这个判断时判断类似"p:first,p:odd .... p:eq(2),p:last[attr=xxx]等selector"
33                  * * */
34                 namespace: namespaces.join(".")
35             }, handleObjIn );        
36 /*
37 看到上诉注释,是不是很清楚了,needsContext其实就是判断first,odd等这种快捷特殊的表达式的,
38 如果我们的selector="p:last"这样的,就是最后一个P元素符合条件

39 */

今天又被吊了,唉~,飘飘飘飘过了

时间: 2024-10-29 19:06:12

jQuery学习-事件之绑定事件(七)的相关文章

jQuery学习-事件之绑定事件(三)

在上一篇<jQuery学习-事件之绑定事件(二)>我们了解了jQuery的dispatch方法,今天我们来学习下handlers 方法: handlers: function( event, handlers ) {         var sel, handleObj, matches, i,             handlerQueue = [],             delegateCount = handlers.delegateCount,             cur =

jQuery学习-事件之绑定事件(二)

在上一篇<jQuery学习-事件之绑定事件(一)>我们了解了jQuery的add方法,今天我们来学习下dispatch方法: dispatch: function( event ) { //这里是修正event对象的属性,处理兼容性问题         event = jQuery.event.fix( event ); var i, ret, handleObj, matched, j,             handlerQueue = [],//事件队列             arg

jQuery学习-事件之绑定事件(一)

我们都知道jQuery的事件其思想来源于Dean Edwards的addEvent,通过源码我们知道jQuery在为元素绑定事件时,每种类型的事件(click,blur)时只绑定了一次对应类型的事件处理方法,实际的方法是存在jQuery的缓存系统中的,这样做的好处我就不多说了,绑定方法的函数为add方法,在执行事件的时,通过handers在缓存系统中获取事件列表,然后通过dispatch函数来执行对应的事件. jQuery.event = { add: function( elem, types

jquery事件与绑定事件

1.首先,我们来看一下经常使用的添加事件的方式: <input type="button" id="btn" value="click me!" onclick="shao();" /> <script type="text/javascript"> function shao() { alert("msg is showing!"); } </script

[jquery]高级篇--js绑定事件

参考:  http://www.cnblogs.com/leejersey/p/3545372.html jQuery on()方法是官方推荐的绑定事件的一个方法.$(selector).on(event,childSelector,data,function,map)由此扩展开来的几个以前常见的方法有.bind() 1 $("p").bind("click",function(){ 2 alert("The paragraph was clicked.&

学习指js绑定事件

由于ie中绑定事件的bug,所以产生了用原生的实践操作来模拟事件绑定的方法,跟着李炎恢学的一招. function addEvent(obj, type, fn){ if(obj.addEventListener){ obj.addEventListener(type, fn, false); }else{ if(!obj.events) obj.events = {}: if(!obj.events[type]) {   obj.events[type] = []; if(obj['on'+

jquery 给一个节点绑定事件总结

//给输入框绑定事件   key = $("#key");   key.bind("focus", focusKey).bind("blur", blurKey).bind("change cut input propertychange", searchNode);   key.bind('keydown', function (e){if(e.which == 13){searchNode();}});      setT

Arc gis api for js 学习随笔之绑定事件鼠标动作

1 var map; 2 require(["esri/map", "dojo/domReady!"], function(Map) { 3 map = new Map("GHL", { 4 5 zoom: 3, 6 basemap: "topo", 7 logo:false, 8 9 10 }); 11 dojo.connect(map,"onMouseMove",function(e){ 12 var

jquery移除事件,绑定事件,触发事件

$('.gcddfadf-btn-pay').unbind('click');//移除绑定事件 $('.gcddfadf-btn-pay').bind('click',function(){});//绑定事件$('.gcddfadf-btn-pay').trigger('click');//触发事件 触发自定义事件bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数. $('#btn').bind("myclick",function(){....});