jquery选择器$("...")返回的是数组,为什么还能继续练式操作$("...").方法 ?

 我来答
帐号已注销
推荐于2017-11-29 · TA获得超过4630个赞
知道大有可为答主
回答量:1345
采纳率:50%
帮助的人:1610万
展开全部

1、jquery选择器$('selector')返回的不是数组,而是封装好的jquery对象。但这个对象有一个特别的地方,就是查询到的节点被以下标为属性,添加到了jquery对象上,所以它看起来像数组,因为它存在一些属性是数字;


2、jquery对象有哪些属性和方法?

我们可以理解,$('selector')返回了一个对象obj,obj[0]....obj[i]总是返回查询到的第i个节点。除此之外,jquery对象还被通过prototype添加了一些方法,即:

jQuery.prototype.each = function(){}
jQuery.prototype.hasClass = function(){}
jQuery.prototype.hide = function(){}
jQuery.prototype.css = function(){}
jQuery.prototype.attr = function(){}

等等。这样的话,$('selector')返回的对象就可以调用这些方法,比如obj.attr('name')、obj.css('color', 'red')。


3、jquery方法如何处理多个节点?

实际上,以上诸如hide、css、attr等方法,在jquery内部都是通过循环来处理各个节点的。但是,如果是要获取节点属性,比如obj.attr('name'),显然这个只能返回一个字符串,所以类似的方法都是获取节点集合中的第一个节点的属性。也就是说,虽然返回的节点很多,但只有第一个会被处理。


4、为什么jquery可以链式调用?

在jquery中,很多同名的方法通过参数个数的不同实现不同的功能,比如css方法,如果传一个参数则表示获取css属性;如果传两个参数,则表示给节点添加某个属性,并赋值为第二个参数。attr、width等也是这样的处理。对于方法的返回值,除了获取属性值、获取css值等需要返回实际值的方法外,当css方法、attr方法表示为为节点添加属性、css样式时,是不需要返回值的,但jquery让这些方法返回了this,也就是返回了调用者自身,所以可以链式调用。

青蛙控
2014-10-09 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:151
采纳率:50%
帮助的人:45.4万
展开全部
jQuery中$("...")返回的不是数组是对象哦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
loveQwithC26
2014-10-09 · TA获得超过228个赞
知道小有建树答主
回答量:175
采纳率:100%
帮助的人:64.8万
展开全部
返回的是jquery对象,jquery对象支持链式操作
更多追问追答
追问
那我console.log出$("...")出来的怎么是选取得元素对象数组?
追答
你可以用instanceof Array 方法看看是不是数组,
是封装好的jquery对象,很多方法在模仿数组,外表很像而已

function xx(who) {
this[0] = who;
}
var fy = new xx('john');
fy[0] === 'john'
fy是一个对象,0是它的属性名而已。因为this.0 = who 会语法报错,所以就用了一个小技巧。
不是看起来像数组就是数组
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式