2012-11-27 1 views
0

jquery를 사용하여 XML DOM 구조에서 요소 집합을 찾을 때;jquery의 .find를 게으른 방식으로 호출하는 방법은 무엇입니까?

.find를 CSS 쿼리와 함께 사용하면 반복 될 수있는 결과가 발생하지만 jquery는 그 시간에 모든 결과를 반환합니다. 이는 느리고 일시 중지됩니다.

어떻게하면 게으른 방식으로 결과를 반복 할 수 있습니까?

.first() 메서드가 있지만 문서에서 .next()를 찾을 수 없다는 것을 발견했습니다. 무엇이 누락 되었습니까?

+2

''설명서에서 .next()를 찾을 수 없습니다. '온라인 문서를 보았습니까? http://api.jquery.com, 다음 특정 : http://api.jquery.com/next/ 온라인 문서는 매우 자세하고 검색 상자가 제공되어 매우 도움이됩니다. 필요한 것. – Nope

+0

'next()'와'prev()'는 lazy query를 수행하지 않을 것입니다. 이미 jQuery nodeset을 가지고 있어야합니다. –

+0

실제로 'lazy nodeset'을 갖고 싶습니다. – Arafangion

답변

2

가장 좋은 제안은 검색 내용을 포함하는 것입니다. 절대 전역 쿼리를 실행하지 마십시오. 모든 가능한에, 당신이 ID로 검색 할 수있는 요소에서 검색을 시작하면 대신 다음

var infoList = $("a.query span.info") 

사용

var container = $('#myCt'); 
var infoList = container.find('a.query span.info'); 
// OR more simply (but I'm not sure jQuery optimizes the query) 
var infoList = container.find('#myCt a.query span.info') 
의 예를 들어

(노드의 수를 통과 할 제한하는)

+0

게으른 평가가없는 경우 검색 크기를 줄이는 것이 좋습니다. – Arafangion

+1

게으른 평가가 적절한 용어라고 생각하지 않습니다.필요한 것은 setTimeouts를 사용한 지연된 평가이므로 UI ​​스레드가 검색이 수행되는 동안 업데이트 할 수있는 기회를 얻게됩니다 –

+0

그 대안이 될 수 있습니다. 개념을 원했기 때문에 '게으른 평가'를 사용했습니다. 첫 번째 항목을 원한다면 찾은 다음 찾고 멈추십시오. 다음 항목을 원한다면 그 항목을 찾으십시오 ... " – Arafangion

-3
$(".class").each(function() { 
//do code here 
}); 
+0

이 방법이'find'보다 나은 방법은 무엇입니까? 진지한 질문. – Madbreaks

+0

각각은 저자가 find()를 사용하여 모든 요소를 ​​먼저 얻고 문제를 일으키는 위치를 반복합니다. "... 그러나 jquery는 그 시간에 모든 결과를 반환 할 것입니다. 느려지고 UI가 일시 중지됩니다." –

3

next()하고 DOM 구조에서 다음 또는 이전 형제로 이동하는 데 사용할 수있는 prev()있다.

+0

메서드가 있지만 게으른 쿼리를 수행하는 데 도움이되지는 않습니다. 질문에 내 의견을 참조하십시오 –

+0

그 분들께 고마워, 내가 http://api.jquery.com/category/traversing/filtering/ .next()가 없었어요. (나는 아직 jquery에 익숙하지 않다.) 그러나 @JuanMendes는 나의 질문에 대한 올바른 해석을 가지고있다. – Arafangion

+0

@Arafangion : 정확한 셀렉터 제공, 레퍼런스 캐싱 및 특정 셀렉터에 대한 하위 검색 실행은 현명하고 효율적인 순회이며, 내가 아는 한 느린 로딩의 해석이 아니라 대신 주어진 유일한 ** 대안 ** 일 수 있습니다 너는 함께 일하고있다. – Nope

관련 문제