博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
get()和eq()
阅读量:7209 次
发布时间:2019-06-29

本文共 1070 字,大约阅读时间需要 3 分钟。

hot3.png

get()方法返回dom对象,而eq()方法返回jQuery对象

$("div").get(0).innerHTML = "返回DOM对象";	var $divs = $("div");        $divs.eq(1).html("返回jQuery对象");	console.log($divs);	console.log($divs[0]);  //使用这种类数组方式返回的貌似都是dom元素,至于为什么,有待深究

下面代码是eq()的源码

eq: function( i ) {		var len = this.length,			j = +i + ( i < 0 ? len : 0 );		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );	}        console.log($);

上面eq()源码用到_pushStack_方法,这是eq()方法返回jQuery对象的方法所在,下面分析它的源码

pushStack: function( elems ) {          var ret = jQuery.merge( this.constructor(), elems );//this.constructor()=$()相当于返回一个空的jQuery对象,length是0,但是有很多属性方法!          ret.prevObject = this;//merge方法会获取到第二个参数的length,对于DOM对象来说第二个参数是undefined,所以什么也不做,因此把它          ret.context = this.context;//放在数组中才能真正用到merge方法!如$("span").pushStack([$("#n9")[0]])这样返回的jQuery对象就不是空的了!          // Return the newly-formed element set          return ret;//通过这里我们可以看到pushStack返回的是通过参数构建的jQuery对象,不过该jQuery对象保存了调用者context,以及通过prevObj      }                  //保存了调用者的引用,该引用用于end方法!

这段代码引用了博客 ,感谢大神分享

转载于:https://my.oschina.net/daladida/blog/894125

你可能感兴趣的文章
DB,Cache和Redis应用场景分析
查看>>
CGI(通用网关接口)
查看>>
Cocos2d-x教程(28)-ttf 字体库的使用
查看>>
Mysql group by,order by,dinstict优化
查看>>
Notepad++ 经常使用快捷键 (MEMO)
查看>>
nyoj116士兵杀死(两)段树单点更新
查看>>
《Programming WPF》翻译 第3章 2.处理输入
查看>>
cdoj 1252 24点游戏 dfs
查看>>
【问题汇总】ListView的FooterView设置可见性的问题
查看>>
JAVA中int、String的类型转换
查看>>
[翻译]opengl扩展教程2
查看>>
命令行上的narrowing(随着输入逐步减少备选项)工具
查看>>
基于Hadoop 2.6.0运行数字排序的计算
查看>>
J2EE的13个规范之(二) JDBC 及其使用
查看>>
【iOS开发-74】解决方式:Xcode6下利用preference保存数据,终于的plist文件在哪里?...
查看>>
JSTL fmt 格式化时间
查看>>
WCF学习之旅—WCF概述(四)
查看>>
PHP AJAXFORM提交图片上传并显示图片源代码
查看>>
CentOS安装mysql*.rpm提示conflicts with file from package的解决的方法
查看>>
PostgreSQL代码分析,查询优化部分,canonicalize_qual
查看>>