web-dev-qa-db-ja.com

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

これの違いは何ですか:

$.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(){})を使用する必要があります。

それらはまったく交換可能ですか?場合によってのみ?決して?

78
marky

説明:

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

例:

$。each():を使用したJavascript配列(またはjsオブジェクト)

var myArray = [10,20,30];

jQuery.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

。each()を使用したjQueryオブジェクト

$('#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

さらに例と詳細を探している場合は、 $。each vs .each()

リソース

99
Phil

from http://api.jquery.com/jQuery.each

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

5
tig

あなたは本当に$.eachを要素や何かではない配列で使いたいのです。すなわち:

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

$.each(x...の代わりにx.eachを使用してそれを走査します:)

.eachは要素専用です:)

3
Michael Wright

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

そのはず:

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

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

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

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

1
StuperUser

機能的な違いはありません。すべてのjQueryオブジェクトは、_jQuery.fn_から継承した.each()メソッドを所有しています。この_object method_を呼び出すことにより、jQueryはどのArray (-like object)を反復処理するかをすでに知っています。つまり、現在のjQueryオブジェクトから_indexed propertys_をループします。

一方、$.each()は、あらゆる種類のArrayまたはObjectをループする単なる「ヘルパーツール」ですが、もちろん、ターゲットとするメソッドを指定する必要があります繰り返したい。
配列またはオブジェクトを渡すかどうかにも注意します。フードの下で_for-in_または_for loop_を使用して正しいことを行います。

1
jAndy

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

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

0
Odnxe

最初のケースでは、以下に示すようにjQueryオブジェクトと他の配列項目を反復処理できます。

jQuery.each()

2番目のケースでは、以下に示すようにjQueryオブジェクトのみを変更できます。

。each()

0
Jamie Dixon

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

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

0
Seth