[jquery] $ .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());

두 번째 예제는 #classesTable에서 선택된 확인란을 살펴보고 드롭 다운에서 일치하는 항목을 제거하는 상황에서 비롯됩니다.

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

나는 그들이 두 가지 다른 일을한다는 것을 이해하지만, “이 경우에는 $ .each ()를 사용하고 다른 경우에는 .each (function () {})를 사용해야합니다.

그것들은 전혀 바꿔 사용할 수 있습니까? 어떤 경우에만? 못?



답변

기술:

.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

자원


답변

에서 http://api.jquery.com/jQuery.each :

$ .each () 함수는 jQuery 객체를 독점적으로 반복하는 데 사용되는 .each ()와 동일하지 않습니다. $ .each () 함수는 맵 (JavaScript 객체)이든 배열이든 모든 컬렉션을 반복하는 데 사용할 수 있습니다.


답변

$.each요소가 아닌 배열과 함께 실제로 사용하고 싶습니다 . 즉 :

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

당신 $.each(x...은 대신 그것을 횡단하는 데 사용 합니다 x.each🙂

.each 요소 전용입니다. 🙂


답변

기능적 차이는 없습니다. 모든 jQuery 객체는.each() 에서 상속 방법을 jQuery.fn. this를 호출함으로써 object methodjQuery는 Array (-like object)반복 할 대상 을 이미 알고 있습니다. 즉, indexed propertys현재 jQuery 객체에서 반복 됩니다.

$.each()반면에 모든 종류의 Array또는 을 반복하는 “도우미 도구”일뿐 Object입니다. 물론 반복 할 대상을 해당 메서드에 알려야합니다.
또한 배열이나 객체를 전달하든 상관없이 a for-in또는 for loop후드 아래에서 올바른 작업을 수행합니다 .


답변

첫 번째는 전달한 컬렉션의 요소에 대해 콜백 함수를 실행하지만 코드는 현재 구문 상 정확하지 않습니다.

그것은해야한다:

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

참조 : http://api.jquery.com/jQuery.each/

두 번째는 실행중인 컬렉션의 각 요소에서 함수를 실행합니다.

참조 : http://api.jquery.com/each/


답변

첫 번째 경우에는 여기에 표시된대로 jQuery 객체 및 기타 배열 항목을 반복 할 수 있습니다.

jQuery.each ()

두 번째 경우에는 여기에 표시된대로 jQuery 객체에 대해서만 itterate 할 수 있습니다.

.마다()


답변

내가 이해 $.each();하는 바에서 객체 또는 배열을 반복하고 각 항목의 반복자와 값을 제공합니다.

$().each(); jQuery 객체 목록을 반복하고 반복기와 jQuery 객체를 제공합니다.