6

最近、使用しなければならないコードサンプルに出くわし、それを使用することができましたが、何が起こっているのか正確には理解できませんでした。

コードの一部は次のとおりです。

.sortElements(function(a, b){
    return $.text([a]) > $.text([b]) ? 
        inverse ? -1 : 1 
        : inverse ? 1 : -1;
}

この関数がとから最初に並べ替える要素を決定していること、aおよびb逆が並べ替え順序を決定していることを知っていますが、何が行われているのかわかりません$.text([a])aのようなテキストとしてparseInt(a)解析していますDate.parse(a)か?

Googleは私を助けることができませんでした。私もjQueryサイトを調べましたが、見つけたのは

$(selector).text()$(selector).text(newText)関数。

これが、 http://jsfiddle.net/gFzCk/からコードのベースにしているフィドルです。

4

5 に答える 5

9

jQuery.textメソッドの実装のための重労働を行い.text()ます - のコア機能を備えた文書化されていない関数のようですが、.text()jQuery の洗練が欠けています。

Sizzleから「インポート」され、 として表示されSizzle.getTextます。

于 2013-02-05T09:33:48.777 に答える
7

jQuery ソースを調べると、おなじみの が内部で使用されている$(selector).text()ことがわかります$.text

jQuery.fn.extend({
    text: function( value ) {
        return jQuery.access( this, function( value ) {
            return value === undefined ?
                jQuery.text( this ) :
                this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
        }, null, value, arguments.length );
    },

これは文書化されていない関数です (つまり、今後の jQuery リビジョンでは、通知することなく自由に削除される可能性があります)。その定義は次のとおりです。

jQuery.text = Sizzle.getText;

Sizzle.getText、順番に、「DOMノードの配列のテキスト値を取得するためのユーティリティ関数」として文書化されています。asSizzle.getTextは文書化された機能であり、jQuery がすぐに Sizzle を削除するとは思わないため、jQuery の省略形ではなくそれを使用することをお勧めします。

この関数は、DOM ノードのテキスト コンテンツを生成するコードです。並べ替え方法は、テキスト コンテンツのアルファベット順に DOM ノードを並べ替えます。[a]要素をすぐに渡す ( ) のではなく、要素を 1 つだけ含む配列のテキストを取得する ( ) ことを作成者が決定した理由はわかりませんa

于 2013-02-05T09:36:18.623 に答える
2

あなたのjsfiddleを見た後、それは要素からテキストを取得するための関数であり、 .text() に似ているようです

console.log(a)記録された<td>28/02/2013</td>

その間

console.log($.text[a])記録された28/02/2013

于 2013-02-05T09:39:44.067 に答える
1

上記のコードが何か役に立つ場合 (= jQuery のドキュメントによれば、そうであるという兆候はありません)、おそらく.text()on aand を呼び出しますb

同じことをするはず$(a).text()なので、なぜ作者が使用しなかったのか疑問に思っています。jqueryラップされたノードであるかどうかに関係なく、コードも機能する可能性があります:-/a

于 2013-02-05T09:34:43.453 に答える
0

まずはブランケット。ifaは要素で[a]あり、要素配列であるため、への呼び出し$.text(...)は配列をパラメーターとして渡します。

に関するドキュメントは見つかりませんでしjQuery.textたが、jQuery.fn.text. jQuery.textただし、 の実装では、配列をパラメーターおよびスカラー値として処理していることがわかります。

この場合、$.text([a])はおそらく とまったく同じ$.text(a)です。

于 2013-02-05T09:41:48.613 に答える