[英]Javascript methods that can not be called from jquery objects?
我正在閱讀學習jQuery 1.3(Jonathan Chaffer和Karl Swedberg),在排序表時,他們在調用.sort()
之前使用.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
所以做了一些小提琴來說清楚
所以很明顯早期的jQuery對象以前沒有.sort()
函數與Javascript數組相同? 但現在他們有......
所以我的問題是jQuery對象還沒有支持哪些功能,所以我們可以記住在使用之前轉換為Javascript數組?
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
jQuery確實有一個.sort
方法,它沒有正式記錄,因為它不遵循通常的jQuery方法格式。
支持的唯一方法是api中列出的方法。
.sort
實現為:
$.fn.sort = [].sort;
您可以根據需要以相同的方式添加自己的其他數組方法。
$.fn.reverse = [].reverse;
如果.sort
未在您的jQuery版本中實現,請自行實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.