[javascript] jQuery에 대한 “존재”기능이 있습니까?

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
}

작은 아마도 더 우아한.