Pertanyaan Apa perbedaan antara $ .each (selector) dan $ (selector) .each ()


Apa perbedaan antara ini:

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

dan ini:

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

Html untuk sel tabel yang dipilih dan ditindaklanjuti terlihat seperti ini:

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

Saya sudah memeriksa dokumentasi jQuery, tetapi saya masih tidak mengerti perbedaannya. (Apakah saya atau dokumentasi itu terkadang sedikit "samar-samar" dalam kejelasan konten?)

Info Tambahan:

Rupanya usaha saya sebuah contoh umum adalah membingungkan orang! Seiring dengan tanda kurung yang hilang (sebelumnya) pada contoh pertama. :(

Contoh pertama berasal dari sebuah baris dalam kode saya yang menghilangkan <tbody> untuk setiap baris dengan kotak centang yang dicentang:

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

Contoh kedua berasal dari situasi di mana saya melihat melalui #classesTable untuk setiap kotak centang yang dicentang dan menghapus item yang cocok dalam dropdown.

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

Saya mengerti bahwa mereka melakukan dua hal yang berbeda, tetapi tidak sampai-sampai saya dapat mengatakan "Saya perlu menggunakan $ .each () dalam hal ini dan .each (function () {}) dalam kasus lain.

Apakah mereka dapat dipertukarkan sama sekali? Hanya dalam beberapa kasus? Tak pernah?


75
2017-07-07 13:16


asal


Jawaban:


Deskripsi: 

.each adalah iterator yang digunakan untuk mengulang hanya jQuery   koleksi benda sementara jQuery.each ($.each) adalah seorang jendral   berfungsi untuk iterasi objek javascript dan array.

Contoh:

Javascript Array (atau js object) menggunakan $ .each ():

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

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

Jika Anda mencari contoh + detail lebih lanjut, $ .each vs. .each ()

Sumber daya


96
2017-07-07 13:20



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

Fungsi $ .each () tidak sama   sebagai .each (), yang digunakan untuk mengulang,   secara eksklusif, melalui objek jQuery. Itu   Fungsi $ .each () dapat digunakan untuk   iterate atas koleksi apa pun, baik   ini adalah peta (objek JavaScript) atau   larik.


5
2017-07-07 13:21



Anda ingin benar-benar menggunakannya $.each dengan larik yang bukan elemen atau sesuatu. yaitu:

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

Anda akan menggunakan $.each(x... untuk melintasi itu bukan x.each :)

.each hanya untuk elemen :)


3
2017-07-07 13:19



Tidak ada perbedaan fungsional. Setiap objek jQuery memiliki file .each() metode yang diwarisi dari jQuery.fn. Dengan memanggil ini object method, jQuery sudah tahu yang mana Array (-like object) untuk beralih. Dengan kata lain, itu loop atas indexed propertys dari objek jQuery saat ini.

$.each() di sisi lain hanya "alat pembantu" yang melingkupi jenis apa pun Array atau Object, tetapi tentu saja Anda harus memberi tahu metode yang menargetkan Anda ingin iterate.
Ini juga akan menjaga Anda apakah Anda melewati Array atau objek, itu melakukan hal yang benar menggunakan for-in atau for loop Dibawah tenda.


1
2017-07-07 13:20



Yang pertama akan menjalankan fungsi callback ke elemen-elemen dalam koleksi yang Anda berikan, tetapi kode Anda tidak benar secara sintaks saat ini.

Harus:

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

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

Yang kedua akan menjalankan fungsi pada setiap elemen koleksi yang Anda jalankan.

Lihat: http://api.jquery.com/each/


1
2017-07-07 13:19



Dalam kasus pertama, Anda dapat mengulangi objek jQuery dan juga item larik lainnya seperti yang ditunjukkan di sini:

jQuery.each ()

Dalam kasus kedua Anda hanya dapat itterate atas objek jQuery seperti yang ditunjukkan di sini:

.setiap()


0
2017-07-07 13:21



Dari yang aku mengerti $.each(); loop melalui objek atau larik dan memberi Anda iterator dan nilai setiap item.

$().each(); loops melalui daftar objek jQuery dan memberi Anda iterator dan objek jQuery.


0
2017-07-07 13:21



Diambil dari http://api.jquery.com/jQuery.each/

Itu $.each() fungsi tidak sama dengan .each(), yang digunakan untuk mengulang, secara eksklusif, melalui objek jQuery. Itu $.each() fungsi dapat digunakan untuk mengiterasi ulang koleksi apa pun, apakah itu peta (objek JavaScript) atau larik. Dalam kasus array, callback dilewatkan indeks array dan nilai array yang sesuai setiap waktu. (Nilai juga dapat diakses melalui kata kunci ini, tetapi Javascript akan selalu membungkus nilai ini sebagai Objek meskipun itu adalah string sederhana atau nilai angka.) Metode mengembalikan argumen pertama, objek yang diulang.


0
2017-07-07 13:19