jQuery로 첫 번째 "n"항목 선택


217

Jquery를 사용하면 페이지에서 첫 번째 "n"항목 만 선택하면됩니다 (예 : 평소와 같이 모든 항목을 선택하는 대신 첫 20 개의 링크)

$("a")

간단하게 들리지만 jQuery 매뉴얼에는 이와 같은 증거가 없습니다.

답변:


378

아마도 slice 에서 읽고 싶을 것입니다 . 코드는 다음과 같습니다.

$("a").slice(0,20)

65
하지만 :lt(20)접근 방식이 훨씬 청소기를 보인다 슬라이스를 사용하는 것은 훨씬 당신이 시작하는 큰 결과 집합이있는 경우 더 효율적입니다. 불행히도 ": lt"및 기타 위치 선택기를 평가할 때 jQuery 는 첫 번째 요소를 가져와도 전체 세트를 반복합니다 . 나는 내 블로그에 여기에 더 많은 것을 썼습니다 : spadgos.com/?p=51
nickf

1
고맙습니다. 제 요청의 측면 요구 사항은 공연에 관한 것이 었으므로 올바른 답변입니다. : lt 선택기를 지적 해 준 다른 사람들에게도 감사드립니다.
Omiod 2009

3
@nickf의 유익한 의견이지만 블로그 링크와 그래프 링크가 작동하지 않는 것 같습니다
Fractalf

1
죄송합니다. 기본적으로 슬라이스를 사용하는 것이 훨씬 빠릅니다.
nickf

92

lt 의사 선택기를 사용하십시오.

$("a:lt(n)")

이것은 n 번째 요소 이전의 요소와 일치합니다 (n 번째 요소는 제외). 번호 매기기는 0부터 시작합니다.


13
jQuery Docs에 따르면 .slice는 최신 브라우저에서 더 빠릅니다.
Blaise

1
jQuery 스타일을 사용하는 것이 체인보다 더 우아합니다.
Fedir RYKHTIK

22

lt () 문서 끝에이 메모가 있습니다 .

추가 사항 :
: lt ()는 jQuery 확장이며 CSS 사양의 일부가 아니기 때문에 : lt ()를 사용하는 쿼리는 기본 DOM querySelectorAll () 메서드가 제공하는 성능 향상을 활용할 수 없습니다. 최신 브라우저에서 더 나은 성능을 얻으려면 대신 $ ( "your-pure-css-selector"). slice (0, index)를 사용하십시오.

$("selector").slice(from, to)더 나은 성능을 위해 사용하십시오 .



7

.slice ()가 항상 더 좋은 것은 아닙니다. 필자의 경우 Chrome 36의 jQuery 1.7에서 .slice (0, 20)가 오류와 함께 실패했습니다.

RangeError : 최대 호출 스택 크기를 초과했습니다

이 경우 : lt (20)이 오류없이 작동한다는 것을 알았습니다. 아마 수만 개의 일치하는 요소가 있었을 것입니다.


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