선택기가 jQuery에서 무언가와 일치하는지 어떻게 확인합니까? [복제하다

StackOverflow https://stackoverflow.com/questions/299802

문제

이 질문은 이미 여기에 답이 있습니다.

Mootools에서는 방금 달릴 것입니다 if ($('target')) { ... }. 하다 if ($('#target')) { ... } jQuery에서 같은 방식으로 작동합니까?

도움이 되었습니까?

해결책

다른 의견 제시 자들은 가장 효율적인 방법을 제안하고 있습니다.

if ($(selector).length ) {
    // Do something
}

절대적으로 ensist () 함수가 있어야하는 경우 - 느리게됩니다. 할 수 있습니다.

jQuery.fn.exists = function(){return this.length>0;}

그런 다음 코드에서 사용할 수 있습니다

if ($(selector).exists()) {
    // Do something
}

대답대로 여기

다른 팁

아니요, jQuery는 선택기가 일치하는지 여부에 관계없이 항상 jQuery 객체를 반환합니다. .length를 사용해야합니다

if ( $('#someDiv').length ){

}

사용한 경우 :

jQuery.fn.exists = function(){return ($(this).length > 0);}
if ($(selector).exists()) { }

당신은 사슬이 그렇지 않을 때 가능하다는 것을 암시 할 것입니다.

이것은 더 나을 것입니다

jQuery.exists = function(selector) {return ($(selector).length > 0);}
if ($.exists(selector)) { }

나는 여기에 답장하는 대부분의 사람들이 그 질문을 잘 이해하지 못했다고 생각합니다. 그렇지 않으면 실수했을 수도 있습니다.

질문은 "여부를 확인하는 방법입니다. 선택자 jQuery에 존재합니다. "

대부분의 사람들은 "jQuery를 사용하여 DOM에 요소가 존재하는지 확인하는 방법"을 위해 이것을 복용했습니다. 거의 상호 교환 할 수 없습니다.

JQuery를 사용하면 사용자 정의 선택기를 만들 수 있지만 초기화하기 전에 E에서 사용하려고 할 때 발생하는 일을 여기에서 확인하십시오.

$(':YEAH');
"Syntax error, unrecognized expression: YEAH"

이것에 들어간 후, 나는 그것이 단순히 확인의 문제라는 것을 깨달았습니다.

if ($.expr[':']['YEAH']) {
    // Query for your :YEAH selector with ease of mind.
}

건배.

또 다른 방법 :

$('#elem').each(function(){
  // do stuff
});
if ($('#elem')[0]) {
  // do stuff
}

대안으로 :

if( jQuery('#elem').get(0) ) {}

나는 선호한다

    if (jQuery("#anyElement").is("*")){...}

기본적 으로이 요소가 일종의 "*"(모든 요소)인지 확인합니다. 더 깨끗한 구문과 "Is"는 "if"내부에서 더 의미가 있습니다.

jQuery.fn.exists = function(selector, callback) {
    var $this = $(this);
    $this.each(function() {
        callback.call(this, ($(this).find(selector).length > 0));
    });
};

나를 위한 .exists 작동하지 않으므로 색인을 사용합니다.

if ($("#elem").index() ! = -1) {}

먼저 함수를 만듭니다.

$.fn.is_exists = function(){ return document.getElementById(selector) }

그 다음에

if($(selector).is_exists()){ ... }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top