请解释[0]在此代码:为什么要把[0]放在儿童的结果上(':first')?
$(function(){
var $cont = $('#cont');
var $el = $cont.children(':first'), el = $el[0];
});
我尝试了一些“警报”查找的文字,但我真的不明白,为什么我们精确的指标,而我们已经知道,我们”重新指向div的“第一个”孩子......?
请解释[0]在此代码:为什么要把[0]放在儿童的结果上(':first')?
$(function(){
var $cont = $('#cont');
var $el = $cont.children(':first'), el = $el[0];
});
我尝试了一些“警报”查找的文字,但我真的不明白,为什么我们精确的指标,而我们已经知道,我们”重新指向div的“第一个”孩子......?
在上述例子中,$el
是含有由:first
选择确保一种元素的jQuery对象。另一方面,el
包含$el
jQuery对象中第一个(也是唯一)项的底层DOM元素。
您可以访问el
变量的原生属性,如.innerHTML
。您可以使用$el
上支持的所有jQuery操作,如$el.html()
。
谢谢!所以为什么,我的意思是,在jQuery对象中定位元素的目的是什么?我们需要什么样的例子来定位javascript元素? jQuery的处理方式与“普通”相同,不是吗? – Paul 2011-04-26 23:51:59
jQuery实现了自己的函数,完全包装了DOM元素,你不能在jQuery对象上使用本地属性,就像我上面使用'innerHTML/html()'的例子。如果您将它们传递给不支持jQuery的JavaScript库,在解决方案发布之前解决jQuery中的错误,使用特定于浏览器的功能或其他任何方法,您可能需要原始元素。在库中有一个选项来展开和获取原始对象总是很不错的。 – DarthJDG 2011-04-27 08:09:36
好吧非常感谢! – Paul 2011-04-27 11:27:53
所有的jQuery查询都会返回一个匹配的所有对象的列表。 :first
不保证单个结果,因此[0]抓取单个元素。
谢谢!好吧,如果我们定位一个div的id,并且我们把“first”放在它上面,我们确信它只会匹配“one”元素,第一个元素,不是? – Paul 2011-04-26 23:55:22
@Paul,取决于。使用':first'但返回多个元素的简单查询是'ul li:first'。该查询返回每个“ul”标签的第一个“li”标签,但页面上可能会有多个“ul”标签(因此返回多个结果)。这个查询更隐蔽的版本是'$(“ul”)。find(“li:first”)'。同样的事情,但很难看到有多个结果。 – riwalk 2011-04-27 01:01:27
好吧非常感谢! – Paul 2011-04-27 11:28:44
var $el = $cont.children(':first')
如果选择器的匹配,即让您与匹配元件一个阵列状物体。你想要的是匹配元素 - 这就是为什么你使用[0]
- 得到返回的“数组”的第一个元素(并且只有)元素。
这基本上是等之间的差异:[element]
和element
(式中,[element][0] = element
)
[0]与使用get(0)来获取DOM元素而不是jQuery元素是一样的。
jQuery对象通常包含DOM节点的集合/数组。举例来说,如果你是遍历一个jQuery对象,如 -
$('div').each(function() {
//In this context, this refers to the DOM node
//and $(this) refers to a jQuery object for that particular DOM node
//therefore $(this)[0] == this
this.innerHTML = 'foo';
$(this).html('foo');
$(this)[0].innerHTML = 'foo';
});
您还可以使用.get()有同样的效果。
//retrieves an array of native DOM nodes using jQuery
var allDivNodes = $('div').get();
//retrieves the first node retrieved by the selector
var firstDiv = $('div').get(0);
//this is the same as get(0), however, using an array accessor can throw an exception
var firstDiv = $('div')[0];
.children是否返回包含第一个元素(包含所有jQuery功能)和[0]返回HTML元素本身的jQuery对象。 – CharlesLeaf 2011-04-26 20:50:43