今天来说说事件中的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)表达式的元素,

          这里返回的是数组,然后在结果数组中查找cur(触发事件元素),返回其索引值。 

          如果大于-1为true反之false;

 }else{

     matches[ sel ] = jQuery.find( sel, this, null, [ cur ] ).length;

       这句语句的意思是在this元素中查找符合sel表达式的元素,同时该元素存在与[cur]这个数组中,

       返回数组的长度。

 }

  那handleObj.needsContext又是什么,请接着看下去......

  handleObj.neddsContext是出现在jQuery事件add方法中的,如下:      

 */

 

 handleObj = jQuery.extend({

                 type: type,//事件类型名称

                 origType: origType,//事件类型名称

                 data: data,//自定数据

                 handler: handler,//事件

                 guid: handler.guid,//事件的guid

                 selector: selector,//委托的selector

                 needsContext: selector && jQuery.expr.match.needsContext.test( selector ),

                 /*

                  jQuery.expr.mathc.needsContext = 

                      /^[\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

                  这个判断时判断类似"p:first,p:odd .... p:eq(2),p:last[attr=xxx]等selector"

                  * * */

                 namespace: namespaces.join(".")

             }, handleObjIn );        

 /*

 看到上诉注释,是不是很清楚了,needsContext其实就是判断first,odd等这种快捷特殊的表达式的,

 如果我们的selector="p:last"这样的,就是最后一个P元素符合条件

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. 如何在Eclipse中查看Android API源码以及support包源码

    http://my.eoe.cn/futurexiong/archive/181.html 开发第三方Android应用的,大多数人应该还是Eclipse结合ADT来开发.那么大多数时候我们可能希望点 ...

  2. 关于left join连接查询 两张表里有同名字段的问题

    左连接查询在开发中很常用,但有个问题常常会遇到,两个表中有同名字段时,比如左右表都有一个id字段,会造成查询结果中左表的id值被右表的id值覆盖掉(大部分php框架都是这个效果),而且还不会报错,容易 ...

  3. Leetcode算法刷题:第14题 Longest Common Prefix

    Longest Common Prefix 题目 给予一个列表,元素为字符串,写一个程序找出最长公共前缀 解题思路 先比较两个字符串,如果第一个字符不一样,则返回空值,比较完成后,用这个公共字符串和下 ...

  4. Sql Server专题一:索引(下)

    首先这次的内容是全文索引,跟前面讲的其实没有多大关系 两种索引的功能和结构都是不同的,普通索引的结构主要以B+树和哈希索引为主,用于实现对字段中数据的精确查找,比如查找某个字段值等于给定值的记录,A= ...

  5. ASP.NET C# 有程序集加不了解决办法

    在项目中添加app.config 获取在 web.config 添加 <?xml version="1.0"?> <configuration> <s ...

  6. Ajax日记

    简要讲Ajax 的内容归纳为博客. AJAX能且仅能从服务器上读取文件,我们使用ajax的时候分为以下几个步骤: 1.  创建ajax对象 2.  链接服务器 3.  发送请求 4.  接收返回值 下 ...

  7. 【MYSQL 清空所有的的表中的数据的SQL的生成】

    MYSQL 清空所有的的表中的数据的SQL的生成 select Concat('TRUNCATE TABLE ', TABLE_NAME, ';') from INFORMATION_SCHEMA.T ...

  8. try/catch异常捕捉

    StringWriter sw = new StringWriter(); e.printStackTrace(new PrintWriter(sw)); System.out.println(sw. ...

  9. 国内5款优秀的WEB前端框架

    1. JX(腾讯) 官网地址:http://alloyteam.github.io/JX/#home JX 是一个类似 Google Closure Library 的 Web 前端开发框架,服务于 ...

  10. linux动态库加载的秘密

    摘自http://gotowqj.iteye.com/blog/1926734 摘自http://www.360doc.com/content/14/0313/13/12747488_36024641 ...