jQuery에 대한 "존재"기능이 있습니까?
질문
jQuery에서 요소의 존재를 확인할 수 있습니까?
현재 코드는 다음과 같습니다.
if ($(selector).length > 0) {
// Do something
}
이것에 접근하는 더 우아한 방법이 있습니까?아마 플러그인이나 함수가 될 것인가?
답변
자바 스크립트에서는 모든 것이 '진실'또는 'falsy'이며 숫자 0은 false를 의미합니다.그래서 당신은 쓸 수 있습니다 :
if ($(selector).length)
당신은 그것이> 0 부분이 필요하지 않습니다.
답변
네!
jQuery.fn.exists = function(){ return this.length > 0; }
if ($(selector).exists()) {
// Do something
}
이것은 다음과 같은 것입니다 : Jeff Atwood가있는 코드 팟 캐스트
답변
당신이 사용하는 경우
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 */ }
답변
존재를 확인하는 가장 빠르고 가장 의미 적으로 자체 설명하는 방법은 실제로 일반 JavaScript를 사용하는 것입니다.
if (document.getElementById('element_id')) {
// Do something
}
jQuery 길이 대안보다 쓰는 것이 조금 더 오래지만, 네이티브 JS 메소드이므로 더 빨리 실행됩니다.
그리고 자신의 jQuery 기능을 작성하는 대안보다 낫습니다.그 대안은 @snover가 명시된 이유로 더 느리게됩니다.그러나 존재하는 () 함수가 jQuery에 내재 된 무언가임을 다른 프로그래머에게도 알려줄 것입니다.JavaScript는 지식 부채가 증가하지 않고 코드를 편집하는 다른 사람들이 이해해야합니다.
NB : element_id 앞에 '#'의 부족을 주목하십시오 (이는 일반 JS이기 때문에 jQuery가 아님).
답변
작성하여 몇 바이트를 절약 할 수 있습니다.
if ($(selector)[0]) { ... }
각 jQuery 오브젝트는 배열로 가장 가기 때문에 배열 dereferencing 연산자를 사용하여 배열에서 첫 번째 항목을 가져올 수 있습니다.지정된 인덱스에 항목이 없으면 정의되지 않은 값을 반환합니다.
출처:https://stackoverflow.com/questions/31044/is-there-an-exists-function-for-jquery
최근댓글