我正在阅读学习jQuery 1.3(Jonathan Chaffer和Karl Swedberg),在排序表时,他们在调用.get()
之前使用.sort()
,然后说
我们需要将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()
的情况下做到这一点,但是即使没有.get()
最新的jQuery,它仍然有效,但是不适用于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数组?
答案 0 :(得分:4)
jQuery对象目前支持3种数组方法:
var methods = 'pop push reverse shift sort splice unshift concat join slice toString indexOf lastIndexOf filter forEach every map some reduce reduceRight'.split(' ')
var implemented = $.grep(methods, function(m) {
return $.prototype[m] == Array.prototype[m];
});
console.log(implemented); // => ["push", "sort", "splice"]
他们也有slice
,但它与数组的slice
不一样:
$.prototype.slice === Array.prototype.slice // => false
答案 1 :(得分:1)
jQuery确实有一个.sort
方法,它没有正式记录,因为它不遵循通常的jQuery方法格式。
支持的唯一方法是api中列出的方法。
.sort
实现为:
$.fn.sort = [].sort;
您可以根据需要以相同的方式添加自己的附加数组方法。
$.fn.reverse = [].reverse;
如果您的jQuery版本中未实现.sort
,请自行实现。