В Mootools я просто запустил if ($('target')) { ... }
. Работает ли if ($('#target')) { ... }
в jQuery одинаково?
Как другие комментаторы предлагают наиболее эффективный способ сделать это, кажется:
if ($(selector).length ) {
// Do something
}
Если вы абсолютно должны иметь функцию exists(), которая будет медленнее, вы можете сделать:
jQuery.fn.exists = function(){return this.length>0;}
Затем в вашем коде вы можете использовать
if ($(selector).exists()) {
// Do something
}
Как ответил here
нет, 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)) { }
.exist()
возвращает bool, для которого нельзя вызывать методы jQuery, см. Комментарии ниже этого ответа .
Еще один способ:
$('#elem').each(function(){
// do stuff
});
Я думаю, что большинство людей, отвечающих здесь, не совсем поняли вопрос, иначе я ошибаюсь.
Вопрос заключается в том, "как проверить, существует ли селектор в jQuery".
Большинство людей приняли это за "как проверить, существует ли элемент в DOM с помощью jQuery". Вряд ли взаимозаменяемый.
jQuery позволяет создавать пользовательские селектора, но смотрите здесь, что происходит, когда вы пытаетесь использовать на e перед его инициализацией;
$(':YEAH');
"Syntax error, unrecognized expression: YEAH"
После этого я понял, что это просто проверка
if ($.expr[':']['YEAH']) {
// Query for your :YEAH selector with ease of mind.
}
Приветствия.
if ($('#elem')[0]) {
// do stuff
}
В качестве альтернативы:
if( jQuery('#elem').get(0) ) {}
.length
(и медленнее). $('#elem')[0]
сделает то же самое.
jQuery.fn.exists = function(selector, callback) {
var $this = $(this);
$this.each(function() {
callback.call(this, ($(this).find(selector).length > 0));
});
};
each
и обратный вызов, если вы просто хотите знать, было ли совпадение ноль или более? Теперь я чувствую себя более глупо, чем прежде, чем я прочитал это! -1.
Я предпочитаю
if (jQuery("#anyElement").is("*")){...}
Что в основном проверяет, являются ли эти элементы своего рода "*" (любой элемент). Просто более чистый синтаксис и "есть" имеет больше смысла внутри "if"
Для меня .exists
не работает, поэтому я использую индекс:
if ($("#elem").index() ! = -1) {}
.length
. Этот ответ лучше всего удалить (голосование за удаление).
сначала создайте функцию:
$.fn.is_exists = function(){ return document.getElementById(selector) }
затем
if($(selector).is_exists()){ ... }
exists
функция JQuery?