Sự khác biệt giữa $ .each (bộ chọn) và $ (bộ chọn) .each ()


81

Sự khác biệt giữa điều này là gì:

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

và điều này:

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

Html cho ô bảng đang được chọn và hoạt động trông giống như sau:

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

Tôi đã xem qua tài liệu jQuery, nhưng tôi vẫn không hiểu sự khác biệt. (Là tôi hay là tài liệu đó đôi khi hơi "mơ hồ" về sự rõ ràng của nội dung?)

Thông tin thêm:

Rõ ràng nỗ lực của tôi một ví dụ chung chung đang làm mọi người bối rối! Cùng với dấu ngoặc (trước đây) bị thiếu trong ví dụ đầu tiên. :(

Ví dụ đầu tiên đến từ một dòng trong mã của tôi loại bỏ <tbody> cho bất kỳ hàng nào có hộp kiểm được chọn:

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

Ví dụ thứ hai đến từ một tình huống mà tôi xem qua #classesTable để tìm bất kỳ hộp kiểm nào đã chọn và xóa mục phù hợp của nó trong danh sách thả xuống.

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

Tôi hiểu rằng họ làm hai việc khác nhau, nhưng không đến mức tôi có thể nói "Tôi cần sử dụng $ .each () trong trường hợp này và .each (function () {}) trong trường hợp khác.

Chúng có thể thay thế cho nhau không? Chỉ trong một số trường hợp? Không bao giờ?


Ví dụ mã đầu tiên của bạn thiếu dấu ngoặc đóng.
tjollans

Một nhận xét và một dấu phẩy, hãy xem câu trả lời của tôi để làm ví dụ.
StuperUser

Mục đích của ví dụ đầu tiên có thể được hiểu theo một vài cách khác nhau. Vui lòng sửa nó để phản ánh những gì bạn đang thực sự làm.
user113716 07/07

Tôi đã thêm dấu ngoặc bên phải bị thiếu ở cuối dòng, ngay trước dấu chấm phẩy.
marky

Tham khảo 5 cách sử dụng jQuery $ .each () codepedia.info/use-jquery-each-method-loop
Satinder singh

Câu trả lời:


102

Sự miêu tả:

.eachlà một trình lặp chỉ được sử dụng để lặp qua bộ sưu tập các đối tượng jQuery trong khi jQuery.each( $.each) là một hàm chung để lặp qua các đối tượng và mảng JavaScript.


Ví dụ

1) Sử dụng $.each() chức năng

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) Sử dụng .each() phương pháp

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

Tài nguyên


5

từ http://api.jquery.com/jQuery.each :

Hàm $ .each () không giống với .each (), được sử dụng để lặp lại, dành riêng, trên một đối tượng jQuery. Hàm $ .each () có thể được sử dụng để lặp qua bất kỳ tập hợp nào, cho dù đó là bản đồ (đối tượng JavaScript) hay mảng.


3

Bạn thực sự muốn sử dụng $.eachvới một mảng không phải là các phần tử hoặc một cái gì đó. I E:

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

Bạn sẽ sử dụng $.each(x...để đi qua đó thay vì x.each:)

.each chỉ dành cho các phần tử :)


1

Không có sự khác biệt về chức năng. Mỗi đối tượng jQuery sở hữu một .each()phương thức được kế thừa từ jQuery.fn. Bằng cách gọi này object method, jQuery đã biết Array (-like object)cần lặp lại cái nào. Nói cách khác, nó lặp lại indexed propertystừ đối tượng jQuery hiện tại.

$.each()mặt khác chỉ là một "công cụ trợ giúp" lặp lại trên bất kỳ loại nào Arrayhoặc Object, nhưng tất nhiên bạn phải cho phương thức đó biết mục tiêu bạn muốn lặp lại.
Nó cũng sẽ chăm sóc bạn cho dù bạn truyền vào Mảng hay đối tượng, nó thực hiện đúng chức năng bằng cách sử dụng một for-inhoặc for loopdưới mui xe.


1

Đầu tiên sẽ chạy hàm gọi lại đến các phần tử trong bộ sưu tập mà bạn đã chuyển vào, nhưng mã của bạn hiện tại không đúng về mặt cú pháp cho nó.

Nó phải là:

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

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

Thứ hai sẽ chạy chức năng trên từng phần tử của bộ sưu tập mà bạn đang chạy nó.

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


Bạn đang gọi do_somethingthay vì chuyển nó. Điều này không chính xác trừ khi do_somethingxảy ra để trả về một hàm.
dùng113716

0

Trong trường hợp đầu tiên, bạn có thể lặp qua các đối tượng jQuery và cả các mục mảng khác như được chỉ ra ở đây:

jQuery.each ()

Trong trường hợp thứ hai, bạn chỉ có thể duyệt qua các đối tượng jQuery như được chỉ ra ở đây:

.mỗi()


0

Từ những gì tôi hiểu, $.each();lặp qua một đối tượng hoặc mảng và cung cấp cho bạn trình lặp và giá trị của từng mục.

$().each(); lặp qua danh sách các đối tượng jQuery và cung cấp cho bạn trình lặp và đối tượng jQuery.


0

Lấy từ http://api.jquery.com/jQuery.each/

Các $.each()chức năng không giống như .each(), được sử dụng để lặp, độc quyền, trên một đối tượng jQuery. Các $.each()chức năng có thể được sử dụng để lặp qua bất kỳ bộ sưu tập, cho dù đó là một bản đồ (đối tượng JavaScript) hoặc một mảng. Trong trường hợp là một mảng, mỗi lần gọi lại được truyền một chỉ số mảng và một giá trị mảng tương ứng. (Giá trị cũng có thể được truy cập thông qua từ khóa this, nhưng Javascript sẽ luôn bao bọc giá trị này dưới dạng Đối tượng ngay cả khi nó là một chuỗi hoặc giá trị số đơn giản.) Phương thức trả về đối số đầu tiên của nó, đối tượng đã được lặp lại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.