我正在读一本书,对于切片方法,它给出了一个这样的例子:
$('*').slice(2,3);
所以对我来说,看起来好像是首先选择页面上的所有元素,然后返回第三个元素。
然后这本书说明了这与$('*').get(2)
不同
这让我很困惑,感觉到目前为止我什么都没学到。
这是说后者
返回包装集中的第三个“元素”但第一个 返回包含该元素的包装集。
我不明白区别,包裹集与元素不同?
答案 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)
只返回第二个元素,它不需要任何参数来设置谁将是第一个元素以切片开始,因为它只返回一个元素。