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

  1.  1 matches[ sel ] = handleObj.needsContext ?
  2.  
  3.  2     jQuery( sel, this ).index( cur ) >= 0 :
  4.  
  5.  3     jQuery.find( sel, this, null, [ cur ] ).length;
  6.  
  7.  4 /*
  8.  
  9.  5  这是handler是方法中过滤委托的方法。等价于
  10.  
  11.  6 if(handleObj.needsContext){
  12.  
  13.  7     matches[ sel ] = jQuery( sel, this ).index( cur ) >= 0;
  14.  
  15.  8        这句语句的意思是:
  16.  
  17.  9          在this(这里是被绑定委托方法的元素)元素中查找sel(selector)表达式的元素,
  18.  
  19.           这里返回的是数组,然后在结果数组中查找cur(触发事件元素),返回其索引值。 
  20.  
  21.           如果大于-1为true反之false;
  22.  
  23.  }else{
  24.  
  25.      matches[ sel ] = jQuery.find( sel, this, null, [ cur ] ).length;
  26.  
  27.        这句语句的意思是在this元素中查找符合sel表达式的元素,同时该元素存在与[cur]这个数组中,
  28.  
  29.        返回数组的长度。
  30.  
  31.  }
  32.  
  33.   那handleObj.needsContext又是什么,请接着看下去......
  34.  
  35.   handleObj.neddsContext是出现在jQuery事件add方法中的,如下:      
  36.  
  37.  */
  38.  
  39.  
  40.  
  41.  handleObj = jQuery.extend({
  42.  
  43.                  type: type,//事件类型名称
  44.  
  45.                  origType: origType,//事件类型名称
  46.  
  47.                  data: data,//自定数据
  48.  
  49.                  handler: handler,//事件
  50.  
  51.                  guid: handler.guid,//事件的guid
  52.  
  53.                  selector: selector,//委托的selector
  54.  
  55.                  needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
  56.  
  57.                  /*
  58.  
  59.                   jQuery.expr.mathc.needsContext = 
  60.  
  61.                       /^[\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
  62.  
  63.                   这个判断时判断类似"p:first,p:odd .... p:eq(2),p:last[attr=xxx]等selector"
  64.  
  65.                   * * */
  66.  
  67.                  namespace: namespaces.join(".")
  68.  
  69.              }, handleObjIn );        
  70.  
  71.  /*
  72.  
  73.  看到上诉注释,是不是很清楚了,needsContext其实就是判断first,odd等这种快捷特殊的表达式的,
  74.  
  75.  如果我们的selector="p:last"这样的,就是最后一个P元素符合条件
  76.  
  77. 39 */ 

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

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

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

    在上一篇<jQuery学习-事件之绑定事件(二)>我们了解了jQuery的dispatch方法,今天我们来学习下handlers 方法: handlers: function( event ...

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

    在上一篇<jQuery学习-事件之绑定事件(一)>我们了解了jQuery的add方法,今天我们来学习下dispatch方法: dispatch: function( event ) {   ...

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

    我们都知道jQuery的事件其思想来源于Dean Edwards的addEvent,通过源码我们知道jQuery在为元素绑定事件时,每种类型的事件(click,blur)时只绑定了一次对应类型的事件处 ...

  4. jQuery如何给body绑定事件?

    jQuery如何给body绑定事件? 代码如下: $(document).bind("resize", function () { alert("php-note.com ...

  5. JQuery在循环中绑定事件的问题详解

    JQuery在循环中绑定事件的问题详解 有个页面上需要N个DOM,每个DOM里面的元素ID都要以数字结尾,比如说 ? 1 2 3 <input type="text" nam ...

  6. jQuery相关方法7----各种事件和绑定事件

    一.jQuery事件 1.鼠标事件 click与dbclick事件 click事件其实是由mousedown与mouseup 2个动作构成,所以点击的动作只有在松手后才触发 $ele.click(): ...

  7. jquery学习笔记(三):事件和应用

    内容来自[汇智网]jquery学习课程 3.1 页面加载事件 在jQuery中页面加载事件是ready().ready()事件类似于就JavaScript中的onLoad()事件,但前者只要页面的DO ...

  8. jQuery学习小结1-CSS操作+事件

    一.DOM对象和jQuery 对象互换 1.jQuery对象 就是通过jQuery包装DOM对象后产生的对象.jQuery对象是jQuery独有的,其可以使用jQuery里的方法.比如: $(&quo ...

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

    参考:  http://www.cnblogs.com/leejersey/p/3545372.html jQuery on()方法是官方推荐的绑定事件的一个方法.$(selector).on(eve ...

  10. jquery html 动态添加元素绑定事件

    由于实际的需要,有时需要往网页中动态的插入HTML内容,并在插入的节点中绑定事件处理函数.我们知道,用Javascript向HTML文档中 插入内容,有两种方法, 一种是在写HTML代码写入JS,然后 ...

随机推荐

  1. 【搜索引擎Jediael开发4】V0.01完整代码

    截止目前,已完成如下功能: 1.指定某个地址,使用HttpClient下载该网页至本地文件 2.使用HtmlParser解释第1步下载的网页,抽取其中包含的链接信息 3.下载第2步的所有链接指向的网页 ...

  2. Building Android Apps 30条建议

    Building Android Apps — 30 things that experience made me learn the hard way There are two kinds of ...

  3. VLC客户端和SDK的简单应用

    VLC_SDK编程指南 VLC 是一款自由.开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD.音频 CD.VCD 及各类流媒体协议.它可以支持目前市面上大多数的视频解码,除了Rea ...

  4. PHP扩展开发之PHP的启动与终止

    PHP程序的启动可以看做是两个概念上的启动,终止也有两个概念上的终止.其中一个是PHP作为Apache(拿它举例,板砖勿扔)的一个模块的启动与终止, 这次启动php会初始化一些必要数据,比如与宿主Ap ...

  5. Python之路第六天,基础(7)-正则表达式(re)

    Python RE模块(正则表达式) 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成 ...

  6. Problem 1008 Hay Points

    Problem Description Each employee of a bureaucracy has a job description - a few paragraphs that des ...

  7. SQL Server 对象

    第一项:重命名对象 execute sp_rename @objname='Nums',@newname ='Numbers',@objtype ='object'; go 这里要特别小心   @ne ...

  8. qt 4.6.2 vs 2005 + QCreator 开发环境配置(有注册码)

    配置开发环境可真是个痛苦的过程,网上的资料参差不齐,只有自己一步步来试验一下了 本人环境 virtualbox +  xp +  vs 2005  en 1.安装vs 2005 en sp1 下载vs ...

  9. [WPF 如何] 如何向 ComboBox 添加一个空白选项

    原文:[WPF 如何] 如何向 ComboBox 添加一个空白选项 看到这个问题,你可能会蔑视一笑 : 这也能成文章? 确实,你只需要在 ItemsSource 的0位置上插入一个空白的项就是了,如: ...

  10. 组队练习赛(Regionals 2012, North America - East Central NA)

    A.Babs' Box Boutique 给定n个盒子,每个盒子都有长宽高(任意两个盒子长宽高不完全相同),现在选盒子的任意两面,要求x1 <= x2 && y1 <= y ...