Проверьте, существует ли div с jquery [дубликат]

Возможные Дубликаты:
есть ли функция "существует" для jQuery

Да, я знаю, что об этом много спрашивали. Но, это смущает меня, так как результаты в google для этого поиска показывают разные методы (перечисленные ниже)

$(document).ready(function() {
    if ($('#DivID').length){
        alert('Found with Length');
    }

    if ($('#DivID').length > 0 ) {
        alert('Found with Length bigger then Zero');
    }

    if ($('#DivID') != null ) {
        alert('Found with Not Null');
    }
});

какой из 3 является правильным способом проверить, существует ли div?

изменить: Жаль видеть, что люди не хотят учиться тому, что является лучшим подходом три разных метода. Этот вопрос на самом деле не о том, "как проверить, существует ли div", но о том, какой метод лучше, и, если кто-то может объяснить, почему это лучше?

3 ответов


первый самый краткий, я бы пошел с этим. Первые два одинаковы, но первый немного короче, поэтому вы сэкономите на байтах. Третье явно неверно, потому что это условие всегда будет оценивать true, потому что объект будет никогда быть нулевым или ложным, если на то пошло.


если вы просто проверяете наличие идентификатора, нет необходимости входить в jQuery можно просто:

if(document.getElementById("yourid") !== null)
{
}

getElementById возвращает null если его нельзя найти.

ссылка.

Если же вы планируете использовать jQuery объект позже я предлагаю:

$(document).ready(function() {
    var $myDiv = $('#DivID');

    if ( $myDiv.length){
        //you can now reuse  $myDiv here, without having to select it again.
    }


});

селектор всегда возвращает jQuery "объект", поэтому не должно быть необходимости проверки в отношении null (Мне было бы интересно, есть ли крайний случай, когда вам нужно проверить null - но я не думаю, что есть).

если селектор ничего не находит, то length === 0 который является "ложным" (при преобразовании в bool его false). Поэтому, если он что - то находит, то это должно быть "правдиво" - поэтому вам не нужно проверять > 0. Только на это "truthyness"


Как отметил karim79, первый является наиболее кратким. Однако я мог бы утверждать, что второй более понятен, поскольку не очевидно/известно некоторым программистам Javascript/jQuery, что ненулевые/ложные значения оцениваются в true in if-операторы. И поэтому третий метод неверен.