jQuery가 요소를 찾지 못했는지 확인


126

나는 jQuery의 선택기, 특히 ID 선택기를 사용하고 있습니다.

$("#elementId")...

jQuery가 요소를 찾았는지 여부를 어떻게 확인해야합니까? 지정된 ID를 가진 요소가 존재하지 않더라도 다음 문은 나에게 제공합니다.[object Object]

alert($("#idThatDoesnotexist"));

답변:


187

$('#idThatDoesnotexist').length당신이 찾고있는 것입니다. (아무것도 찾지 못하면=== 0 .) 따라서 조건문은 다음과 같아야합니다.

if ($ ( '# id'). length) {/ * 찾은 경우 코드 * /} else {/ * 찾을 수없는 경우 코드 * /}

jQuery (거의)는 사용할 때 항상 "jQuery 객체"를 반환하기 때문에 해당 경고에서 객체가 반환됩니다. 이는 메소드 체인을 허용하는 jQuery의 발견 된 요소에 대한 래퍼입니다.


3
0이 필요하지 않습니다. $ ( '# id'). length는 충분합니다 (javascript에서 0 == false)
David Hellsing

13
@David 당신이 필요 하지 않다는 사실이 반드시 중복되게 만드는 것은 아닙니다. 언뜻보기에 IMO는 그것을 더 명확하게 만듭니다.
Abir 2014-01-22

1
@Abir : 명시 적으로 0이 아닌 진실성을 테스트하면서 구문이없는 구문에 익숙해지기 전까지 만 더 명확 해집니다. 나는 단순히 구문이없는 구문에 익숙해지는 것을 제안합니다 == 0.
Scott Stafford

@ScottStafford, 더 많은 정리를 if (!!$('#id').length)위해 부울 캐스트를 수행하는을 사용할 수도 있습니다 .
Daniele Vrut 2014-08-02

6
또한 Javascript의 뉘앙스에 익숙하지 않은 사람이 코드를 읽을 때 몇 개의 문자를 저장하는 이점이 잠재적 인 혼란을 상쇄하는지 고려해야합니다. 내 생각에 유지 관리 가능성에 관한 한 모범 사례는 아닙니다.
Matt Carr

26

Futuraprime이 맞지만 다음을 수행하여 구문을 줄일 수 있습니다.

if ($("#id").length) {
   //at least one element was found
} else {
   //no elements found
}

11
!$.isEmptyObject($.find('#id'))

요소가 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.


7
$('#my_selector').length > 0 
$('#my_selector').get(0) !== undefined
$('#my_selector')[0] !== undefined

이것이 기본입니다. 이제 원하는대로하십시오.

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