Как вы проверяете, соответствует ли селектор чему-либо в jQuery?

В Mootools я просто запустил if ($('target')) { ... }. Работает ли if ($('#target')) { ... } в jQuery одинаково?

Ответ 1

Как другие комментаторы предлагают наиболее эффективный способ сделать это, кажется:

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

Если вы абсолютно должны иметь функцию exists(), которая будет медленнее, вы можете сделать:

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

Затем в вашем коде вы можете использовать

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

Как ответил here

Ответ 2

нет, jquery всегда возвращает объект jquery независимо от того, был ли выбран селектор или нет. Вам нужно использовать .length

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

}

Ответ 3

если вы использовали:

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

вы бы подразумевали, что цепочка была возможна, если это не так.

Это было бы лучше

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

Ответ 4

Еще один способ:

$('#elem').each(function(){
  // do stuff
});

Ответ 5

Я думаю, что большинство людей, отвечающих здесь, не совсем поняли вопрос, иначе я ошибаюсь.

Вопрос заключается в том, "как проверить, существует ли селектор в jQuery".

Большинство людей приняли это за "как проверить, существует ли элемент в DOM с помощью jQuery". Вряд ли взаимозаменяемый.

jQuery позволяет создавать пользовательские селектора, но смотрите здесь, что происходит, когда вы пытаетесь использовать на e перед его инициализацией;

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

После этого я понял, что это просто проверка

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

Приветствия.

Ответ 6

if ($('#elem')[0]) {
  // do stuff
}

Ответ 7

В качестве альтернативы:

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

Ответ 8

Я предпочитаю

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

Что в основном проверяет, являются ли эти элементы своего рода "*" (любой элемент). Просто более чистый синтаксис и "есть" имеет больше смысла внутри "if"

Ответ 9

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

Ответ 10

Для меня .exists не работает, поэтому я использую индекс:

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

Ответ 11

сначала создайте функцию:

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

затем

if($(selector).is_exists()){ ... }