$ .each (selector)와 $ (selector) .each ()의 차이점은 무엇입니까?


81

이것의 차이점은 무엇입니까?

$.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 () {})를 사용해야합니다.

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


첫 번째 코드 예제에 닫는 대괄호가 없습니다.
tjollans jul.

주석과 쉼표, 예는 내 대답을 참조하십시오.
StuperUser

첫 번째 예의 의도는 몇 가지 다른 방식으로 해석 될 수 있습니다. 실제로하고있는 일을 반영하도록 수정하십시오.
user113716

세미콜론 바로 앞에 줄 끝에 누락 된 오른쪽 괄호를 추가했습니다.
marky

) (5 가지 방법이 jQuery를 $ .each의 사용을 참조하십시오 codepedia.info/use-jquery-each-method-loop
Satinder 싱

답변:


102

기술:

.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. this를 호출함으로써 object methodjQuery는 Array (-like object)반복 할 대상 을 이미 알고 있습니다. 즉, indexed propertys현재 jQuery 객체에서 반복 됩니다.

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


1

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

그것은해야한다:

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

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

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

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


당신은 do_something그것을 전달 하는 대신 호출 하고 있습니다. do_something함수를 반환 하지 않는 한 이것은 올바르지 않습니다 .
user113716

0

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

jQuery.each ()

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

.마다()


0

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

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


0

http://api.jquery.com/jQuery.each/ 에서 가져옴

$.each()함수는 .each()jQuery 객체를 독점적으로 반복하는 데 사용되는와 동일하지 않습니다 . 이 $.each()함수는 맵 (JavaScript 객체)이든 배열이든 모든 컬렉션을 반복하는 데 사용할 수 있습니다. 배열의 경우 콜백에 배열 인덱스와 해당 배열 값이 매번 전달됩니다. (이 키워드를 통해 값에 액세스 할 수도 있지만 Javascript는이 값이 단순한 문자열 또는 숫자 값인 경우에도 항상 Object로 래핑합니다.) 메서드는 반복 된 객체 인 첫 번째 인수를 반환합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.