切片方法和get方法的区别

时间:2013-05-29 12:47:02

标签: jquery

我正在读一本书,对于切片方法,它给出了一个这样的例子:

$('*').slice(2,3);

所以对我来说,看起来好像是首先选择页面上的所有元素,然后返回第三个元素。

然后这本书说明了这与$('*').get(2)不同 这让我很困惑,感觉到目前为止我什么都没学到。 这是说后者

  

返回包装集中的第三个“元素”但第一个   返回包含该元素的包装集。

我不明白区别,包裹集与元素不同?

3 个答案:

答案 0 :(得分:4)

是的,有区别。

这是一个DOM元素:

var element = document.getElementById("foo");

此元素公开由DOM(MDN reference)指定的属性和函数。例如,假设它是一个输入元素,您可以使用element.value获得其值。

这是一个jQuery对象,也称为“包装集”:

var wrapped = $(element);

这个特殊的包装集只包含上面的一个元素。包装集公开属性和函数as defined by jQuery。例如,您可以使用wrapped.val()获取其值。

让我们看一下本书所讨论的内容。

第一句话:

  

后者返回包装集中的第三个“元素”

这意味着.get()的返回值是包装的元素之一;当你使用它时,jQuery会引用你对其中一个元素的引用。 API文档明确声明结果是DOM元素:

  

检索jQuery对象匹配的DOM元素之一。

第二句:

  

但第一个返回包含元素

的包装集

这意味着.slice的返回值本身就是一个包装集,它只包装源包装集所包含的一些元素。 API文档描述说结果是包装原始子集的包装集:

  

将匹配元素集减少到由范围指定的子集   指数。

答案 1 :(得分:1)

好吧,正如用'slice'函数所说,你可以检索一个集合(多个对象),而使用'get'函数你只需要一个元素。

但重要的是'get'函数返回DOM的一个元素(它不是jquery对象,而slice函数返回一个jquery对象。

例如,如果您想更改背景颜色:

$("*").get(8).style.backgroundColor = "red";
$("*").slice(8,9).css("background-color", "red");

答案 2 :(得分:0)

使用slice的第一个选项不仅返回第三个元素,而且返回第二个元素之后的所有元素,当你传递3时,它将只返回第三个元素。

但是如果你传递$('*').slice(2,5);它将返回第三,第四和第五个元素,$('*').get(2)只返回第二个元素,它不需要任何参数来设置谁将是第一个元素以切片开始,因为它只返回一个元素。