【发布时间】:2012-06-24 20:45:28
【问题描述】:
我正在阅读 Learning jQuery 1.3(Jonathan Chaffer 和 Karl Swedberg),在对表格进行排序时,他们在调用.sort() 之前使用了.get(),并说
我们需要将 jQuery 对象转换为 DOM 节点数组。尽管 jQuery 对象在许多方面表现得像数组,但它们没有任何可用的原生数组方法,例如 .sort()。
代码:
$("#sort").click(function() {
var posts = $("#posts_div .post");
posts.sort(function(a, b) {
return ($(a).text()) > ($(b).text());
});
$.each(posts, function(index, post) { $("#posts_div").append(post); });
});
所以我尝试在不使用.get() 的情况下执行此操作,但令人惊讶的是,即使没有使用最新 jQuery 的.get(),它也能正常工作,但不适用于 1.3
所以做了一些小技巧来说明清楚
**Not working without .get() jquery 1.2.6 **
Working with .get() jquery 1.2.6
Working without .get() jquery 1.7.2
Working with .get() jquery 1.7.2
那么显然早期的 jQuery 对象过去没有 .sort() 函数与 Javascript 数组相同?但现在他们有..
所以我的问题是 jQuery 对象还不支持哪些功能,所以我们可以记住在使用之前转换为 Javascript 数组??
【问题讨论】:
-
我不使用 jQuery 的另一个原因。
-
解决最后一点:不,它不是 jQuery 对象。整体是一个包含 DOM 元素的 jQuery 对象,所以
a和b(作为对象内部的单个元素)是 DOM 元素。 -
您不应该依赖任何库中未记录的特性——它们随时可能发生变化。在这种特定情况下,只需在执行数组操作之前获取一个真正的 DOM 元素数组即可。
-
@AnthonyGrist 当我们有一些选择器返回多个元素时,它不是一个 jquery 对象数组吗??
-
@RajatSinghal 否。
.get()函数旨在为您提供对 DOM 元素本身的访问,因此返回的数组是 DOM 元素数组,而不是 jQuery 对象。
标签: javascript jquery arrays javascript-objects