$ .each ()가 모든 항목을 반복하지 않는 이유는 무엇입니까?
pre
클래스와 함께 10 개의 요소를 포함하는 다음 마크 업이 있습니다 indent
.
<pre class="indent"></pre>
<pre class="indent"></pre>
<pre class="indent"></pre>
<pre class="indent"></pre>
<pre class="indent"></pre>
<pre class="indent"></pre>
<pre class="indent"></pre>
<pre class="indent"></pre>
<pre class="indent"></pre>
<pre class="indent"></pre>
다음 jQuery .each()
함수를 사용하여 각 요소를 반복합니다.
$(function(){
$.each(".indent", function(index){
alert(index);
});
});
10 개의 알림이 표시 될 것으로 예상하지만 7 개만 표시됩니다.
그러나 이것은 예상대로 작동합니다 $(".indent").each()
.
$(function(){
$(".indent").each(function(index){
alert(index);
});
});
$.each()
문서를 보면 차이점이 있음을 이해합니다.
$ .each () 함수는 jQuery 객체를 독점적으로 반복하는 데 사용되는 $ (selector) .each ()와 다릅니다.
하지만이 경우 왜 모든 요소를 반복하지 않는지 이해할 수 없습니다.
왜 이런 일이 발생합니까?
$.each(".indent", function(index){
의 요소를 반복하지 않습니다 $('.indent')
하지만 이상 ".indent"
길이가 7 개 문자입니다 문자열입니다.
참조 참조
jQuery 소스 코드를 기반으로 한 자세한 설명 :
jQuery는 먼저 첫 번째 매개 변수 obj
(여기서는 문자열)에 다음이 있는지 확인합니다 length
.
var ...
length = obj.length,
isObj = length === undefined || jQuery.isFunction( obj );
length
가 있고 함수가 아닌 문자열 isObj
은 false
입니다.
이 경우 다음 코드가 실행됩니다.
for ( ; i < length; ) {
if ( callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {
break;
}
}
따라서 함수가 주어지면 f
다음 코드는
$.each(".indent", f);
다음과 같다
for (var i=0; i<".indent".length; i++) {
var letter = ".indent"[i];
f.call(letter, i, letter);
}
(당신이 사용하는 문자를 기록 할 수 있습니다 var f = function(i,v){console.log(v)};
또는 미묘한 생각 나게 하나 call
사용 var f = function(){console.log(this)};
)
문자열을 반복하고 있으므로 객체 또는 배열을 $.each
메서드에 전달해야합니다 .
$(function(){
$.each($(".indent"), function(index){
alert(index);
});
});
$ .each는 데이터 컬렉션을 반복합니다. 7 개의 문자가있는 문자열을 전달하므로 각 문자에 대해 반복됩니다. 사용 예를 참조하십시오.
$.each([52, 97], function(index, value) {
alert(index + ': ' + value);
});
ReferenceURL : https://stackoverflow.com/questions/13648515/why-doesnt-each-iterate-through-every-item
'programing tip' 카테고리의 다른 글
호스트에서 Docker 컨테이너의 웹 서버에 액세스하는 방법 (0) | 2021.01.10 |
---|---|
정적 컨텍스트는 항상 C #에서 단일입니까? (0) | 2021.01.10 |
웹 페이지에서 위쪽 여백을 제거하려면 어떻게합니까? (0) | 2021.01.09 |
Iphone의 UiButton에 텍스트 여백 / 패딩 제공 (0) | 2021.01.09 |
여러 인수 중 하나를 사용하여 메서드가 호출되었음을 확인 (0) | 2021.01.09 |