선택기가 jQuery에서 무언가와 일치하는지 어떻게 확인합니까? [복제하다
-
08-07-2019 - |
문제
이 질문은 이미 여기에 답이 있습니다.
- jQuery에 대한 "존재"기능이 있습니까? 40 답변
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()){ ... }