7

Learning 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); });
});​

ということで、使わずにやってみたところ、最新のjQueryではなくても動くのに、1.3では動かず.get()びっくり。.get()

そのため、明確にするためにいくつかのフィドルを作成しました

.get()** jquery 1.2.6がないと動作しません**

.get()jquery 1.2.6での作業

.get()jquery 1.7.2なしで作業する

.get()jquery 1.7.2での作業

明らかに、以前の jQuery オブジェクトは.sort()Javascript 配列と同じ機能を持っていませんでしたか? しかし今、彼らは..

私の質問は、jQuery オブジェクトがまだサポートしていない関数は何ですか?

4

2 に答える 2

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
于 2012-06-22T14:52:10.280 に答える
1

jQuery には.sortメソッドがありますが、jQuery メソッドの通常の形式に従っていないため、正式に文書化されていません。

サポートされている唯一のメソッドは、apiにリストされているものです。

.sort次のように実装されます。

$.fn.sort = [].sort;

同じ方法で、必要に応じて独自の配列メソッドを追加できます。

$.fn.reverse = [].reverse;

.sortお使いのバージョンの jQuery に実装されていない場合は、自分で実装してください。

于 2012-06-22T14:27:18.747 に答える