2012-09-04 2 views
0

jQuery에서 실시간 검색 필터링 기능을 구현하려고하는데 $ .each()를 사용하고 있습니다. 지금은 각 요소를 반복하여 텍스트를 인쇄하려고하지만 최대 호출 스택을 초과하여 실행 문제가 발생했습니다. 목록은 약 50-60 개의 항목이므로 크기가 전혀 문제가 아니라고 생각합니다. 아마도 그렇게 생각하지는 않지만 일부 무한 재귀가 실행 중일 것입니다.

<div id="brands"> 
    <ul id="left_brands"> 
     <li><a class="brand_check" href="javascript:void">Vineyard Vines</a></li> 
     <li><a class="brand_check" href="javascript:void">Brooks Brothers</a></li> 
     <li><a class="brand_check" href="javascript:void">Coast Apparel</a></li> 
     <!-- etc. --> 
    </ul> 
</div> 

그리고 여기에 나에게 오류를주고 JQuery와 코드입니다 : 어떤 제안이 많이 감사합니다

$("#brand_filter input").keyup(function() { 
    $.each("#brands li a", function() { 
     alert($(this).text()); 
    }); 
}); 

아래는 내 관련 HTML입니다.

답변

1

대신이 작업을 수행 :

$("#brand_filter input").keyup(function() { 
    $("#brands li a").each(function() { 
     alert($(this).text()); 
    }); 
}); 

재귀는하지 셀렉터 결과 문자열의 문자를 통해 자신을 반복하고 지글 지글의 gettext에 – 내부에서 발생한다. 이 경우 나는 당신이 당신이 생각하는대로 그렇게하는 것에 어떤 이점도 보이지 않으며, 이것은 좀 더 표준적인 것처럼 보일 수 있습니다.

+0

를 사용할 수 있습니까? – jrubins

+0

@jrubins 당신이 그것을하는 방식 (또는 더 정확하게, 당신이 그것을하고 있다고 생각). –

+0

오, 그래. 대답을 주셔서 감사합니다 – jrubins

2

컬렉션 반복기를 사용하는 경우 선택기 문자열이 아닌 Jquery 객체를 반복해야합니다.

그래서 단지 당신이 무슨 일에 혜택을 볼 수 없습니다

$("#brand_filter input").keyup(function() { 
    $.each($("#brands li a"), function() { 
     alert($(this).text()); 
    }); 
}); 

를 사용하거나 선택 구문을

$("#brand_filter input").keyup(function() { 
    $("#brands li a").each(function() { 
     alert($(this).text()); 
    }); 
}); 
관련 문제