$ .each(selector)と$(selector).each()の違いは何ですか


83

これの違いは何ですか:

$.each($('#myTable input[name="deleteItem[]"]:checked').do_something());

この:

$('#myTable input[name="deleteItem[]"]:checked').each(function() { do_something });

選択されて処理されているテーブルセルのhtmlは、次のようになります。

<td width="20px"><input type="checkbox" class="chkDeleteItem" name="deleteItem[]" value="' . $rowItem['itemID'] . '" /></td>

jQueryのドキュメントを確認しましたが、違いがわかりません。(それは私ですか、それともそのドキュメントは内容の明確さにおいて時々わずかに「曖昧」ですか?)

追加情報:

どうやら私の試みの一般的な例は人々を混乱させています!最初の例で(以前は)欠落していた括弧とともに。:(

最初の例は、チェックボックスがオンになっている行の<tbody>を削除するコードの行からのものです。

$.each($('#classesTable input[name="deleteClasses[]"]:checked').parent().parent().parent().remove());

2番目の例は、チェックされているチェックボックスがないか#classesTableを調べて、ドロップダウンで一致する項目を削除する状況からのものです。

$('#classesTable input[name="deleteClasses[]"]:checked').each(function(){
    $('#classesList option[value="' + $(this).attr('value') + '"]').remove();
});

私はそれらが2つの異なることをすることを理解していますが、「この場合は$ .each()を使用し、別の場合は.each(function(){})を使用する必要がある」とは言えません。

それらはまったく互換性がありますか?場合によってのみ?決して?


最初のコード例には、閉じ括弧がありません。
tjollans 2011

コメントとコンマ。例については私の回答を参照してください。
StuperUser 2011

最初の例の意図は、いくつかの異なる方法で解釈できます。実際に行っていることを反映するように修正してください。
user113716 2011

行の最後、セミコロンの直前に、欠落している右のパレンを追加しました。
マーキー2011

jQueryの5つの使用方法を参照$ .each()codepedia.info/use-jquery-each-method-loop
Satinder singh

回答:


104

説明:

.eachはjQueryオブジェクトコレクションのみを反復処理するために使用されるイテレータですが、jQuery.each$.each)はJavaScriptオブジェクトと配列を反復処理するための一般的な関数です。


1)機能の使用$.each()

var myArray = [10,20,30];

$.each( myArray, function(index, value) {
   console.log('element at index ' + index + ' is ' + value);
});

//Output
element at index 0 is 10
element at index 1 is 20
element at index 2 is 30

2)方法を使用.each() する

$('#dv').children().each(function(index, element) {
    console.log('element at index ' + index + 'is ' + (this.tagName));
    console.log('current element as dom object:' + element);
    console.log('current element as jQuery object:' + $(this));
});

//Output
element at index 0 is input
element at index 1 is p
element at index 2 is span

リソース


5

http://api.jquery.com/jQuery.eachから:

$ .each()関数は、jQueryオブジェクトに対して排他的に反復するために使用される.each()と同じではありません。$ .each()関数を使用して、コレクションがマップ(JavaScriptオブジェクト)であるか配列であるかに関係なく、任意のコレクションを反復処理できます。


3

$.each要素などではない配列で実際に使用したい。すなわち:

var x = ["test", "test2"];

:)の$.each(x...代わりにそれをトラバースするために使用しますx.each

.each 要素専用です:)


1

機能的な違いはありません。すべてのjQueryオブジェクトは、.each()から継承されたメソッドを所有していjQuery.fnます。これを呼び出すことによりobject method、jQueryはどちらArray (-like object)を繰り返すかをすでに認識しています。つまり、indexed propertys現在のjQueryオブジェクトからをループします。

$.each()一方、あらゆる種類のArrayまたはをループする単なる「ヘルパーツール」ですObjectが、もちろん、反復するターゲットをそのメソッドに指示する必要があります。
また、配列またはオブジェクトを渡すかどうかも処理します。内部for-inまたは内部を使用して正しいことをfor loop行います。


1

1つ目は、渡したコレクション内の要素に対してコールバック関数を実行しますが、現時点ではコードが構文的に正しくありません。

そのはず:

$.each($('#myTable input[name="deleteItem[]"]:checked'), do_something);

参照:http//api.jquery.com/jQuery.each/

2つ目は、実行しているコレクションの各要素で関数を実行します。

参照:http//api.jquery.com/each/


あなたはdo_somethingそれを渡す代わりに呼んでいます。do_something関数を返さない限り、これは正しくありません。
user113716 2011


0

私が理解し$.each();ていることから、オブジェクトまたは配列をループし、各アイテムのイテレーターと値を提供します。

$().each(); jQueryオブジェクトのリストをループし、イテレーターとjQueryオブジェクトを提供します。


0

http://api.jquery.com/jQuery.each/から取得

この$.each()関数は.each()、jQueryオブジェクトを排他的に反復するために使用されると同じではありません。この$.each()関数を使用して、マップ(JavaScriptオブジェクト)であろうと配列であろうと、任意のコレクションを反復処理できます。配列の場合、コールバックには毎回配列インデックスと対応する配列値が渡されます。(この値にはthisキーワードを使用してアクセスすることもできますが、Javascriptは、単純な文字列または数値であっても、常にこの値をオブジェクトとしてラップします。)メソッドは最初の引数である反復されたオブジェクトを返します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.