var test = $();
test.push( $('div')[0] );
这很有效。知道为什么吗? 由于push是一个数组方法,我不明白为什么这个在这种情况下工作,任何想法?
是否有实际用途,因为你可以使用.add()?
答案 0 :(得分:3)
他们从.push()
借用Array.prototype
。
https://github.com/jquery/jquery/blob/1.6.2/src/core.js#L70
和
https://github.com/jquery/jquery/blob/1.6.2/src/core.js#L296
示例: http://jsfiddle.net/HgS2R/1/
var MyObj = function(){};
MyObj.prototype.push = Array.prototype.push;
var inst = new MyObj;
inst.push( "test" );
document.write( inst[ 0 ] + '<br>' + inst.length ); // test, 1
请注意,自定义构造函数的实例与实际数组的行为不同。
编辑:
关于问题中的修改,.push()
与.add()
不同。
.push()
方法用于将DOM元素添加到现有的jQuery对象。
.add()
方法可以接受DOM元素或具有1个或多个DOM元素的另一个jQuery对象,并返回添加了新元素的 new jQuery对象。
它更像是.concat()
。
答案 1 :(得分:1)
我检查了源代码并找到了这些代码块(带注释)。不确定他们是否回答了你的问题:
// Save a reference to some core methods
toString = Object.prototype.toString,
hasOwn = Object.prototype.hasOwnProperty,
push = Array.prototype.push,
slice = Array.prototype.slice,
trim = String.prototype.trim,
indexOf = Array.prototype.indexOf,
// For internal use only.
// Behaves like an Array's method, not like a jQuery method.
push: push,
sort: [].sort,
splice: [].splice