jQuery에서 요소의 존재를 어떻게 확인할 수 있습니까?
내가 가지고있는 현재 코드는 다음과 같습니다.
if ($(selector).length > 0) {
// Do something
}
이것에 접근하는 더 우아한 방법이 있습니까? 아마도 플러그인이나 함수입니까?
답변
JavaScript에서 모든 것은 ‘거짓’또는 ‘거짓’이며 숫자 0
(및 NaN)의 경우 false
다른 모든 것을 의미 합니다 true
. 그래서 당신은 쓸 수 있습니다 :
if ($(selector).length)
그 >0
부분 은 필요하지 않습니다 .
답변
예!
jQuery.fn.exists = function(){ return this.length > 0; }
if ($(selector).exists()) {
// Do something
}
Jeff Atwood 님의 Herding Code podcast 님의 질문에 답변
답변
사용한 경우
jQuery.fn.exists = function(){return ($(this).length > 0);}
if ($(selector).exists()) { }
체인이 불가능할 때 체인이 가능했음을 암시합니다.
이것은 더 나을 것입니다 :
jQuery.exists = function(selector) {return ($(selector).length > 0);}
if ($.exists(selector)) { }
또는 FAQ에서 :
if ( $('#myDiv').length ) { /* Do something */ }
다음을 사용할 수도 있습니다. jQuery 객체 배열에 값이 없으면 배열의 첫 번째 항목을 가져 오면 정의되지 않은 상태로 반환됩니다.
if ( $('#myDiv')[0] ) { /* Do something */ }
답변
이것을 사용할 수 있습니다 :
// if element exists
if($('selector').length){ /* do something */ }
// if element does not exist
if(!$('selector').length){ /* do something */ }
답변
존재를 확인하는 가장 빠르고 의미 론적으로 자기 설명 방법은 실제로 plain을 사용하는 것입니다 JavaScript
.
if (document.getElementById('element_id')) {
// Do something
}
jQuery 길이 대안보다 작성하는 것이 약간 더 길지만 기본 JS 메소드이므로 더 빠르게 실행됩니다.
그리고 자신의 jQuery
함수 를 작성하는 것보다 낫습니다 . @snover가 언급 한 이유 때문에 그 대안이 더 느립니다. 그러나 그것은 또한 다른 프로그래머들 exists()
에게이 함수가 jQuery 고유 의 기능 이라는 인상을 줄 것 입니다. JavaScript
지식 부채 증가없이 코드를 편집하는 다른 사람들이 이해할 수 있어야합니다.
NB : 앞에 ‘#’이 없다는 것을 주목하십시오 element_id
(이것은 일반 JS이기 때문에 jQuery
).
답변
다음과 같이 작성하여 몇 바이트를 절약 할 수 있습니다.
if ($(selector)[0]) { ... }
이 작품은 각각의 jQuery 객체는 가장 무도회는 배열로, 그래서 우리는에서 첫 번째 항목을 얻을 수있는 배열 역 참조 연산자를 사용할 수 있기 때문에 배열 . undefined
지정된 인덱스에 항목이없는 경우 반환 합니다.
답변
당신이 사용할 수있는:
if ($(selector).is('*')) {
// Do something
}
작은 아마도 더 우아한.