Как проверить, что элемент существует в DOM, используя jQuery? - PullRequest
23 голосов
/ 22 июня 2009

Обычно в JavaScript я делаю что-то подобное ниже, чтобы проверить, существует ли элемент:

if (document.getElementById('lblUpdateStatus')) {
    $("#lblUpdateStatus").text("");
}

Но, используя jQuery - как я могу сделать то же самое?

Ответы [ 7 ]

29 голосов
/ 22 июня 2009

$ возвращает массив совпадающих элементов, поэтому проверьте свойство длины, и все готово

if ($('#lblUpdateStatus').length) {
    $("#lblUpdateStatus").text("");
}
17 голосов
/ 22 июня 2009

Метод get возвращает соответствующие элементы DOM:

if($("#lblUpdateStatus").get(0)){
    $("#lblUpdateStatus").click(function () { ... });
}

но я не уверен, что это быстрый метод.

16 голосов
/ 22 июня 2009

Дело в том, что jQuery будет выполнять запрошенное действие, только если элемент существует :-), так что вам нужно только:

$("#lblUpdateStatus").text("");
11 голосов
/ 22 июня 2009

Не вижу смысла использовать jQuery только ради этого. $('#lblUpdateStatus') будет в основном идти прямо к document.getElementById('lblUpdateStatus'), так как селектор имеет привязку, поэтому вы ничего не получите. Кроме того, просто для проверки, существует ли объект DOM, оборачивание его в объект jQuery создаст довольно много накладных расходов.

С другой стороны, если вы просто хотите изменить текстовое свойство объекта, вам не нужно проверять его существование, если вы используете jQuery.

if (document.getElementById('lblUpdateStatus')) {
    $("#lblUpdateStatus").text("");
}

сделает то же самое, что и

$("#lblUpdateStatus").text("");
9 голосов
/ 17 октября 2012

Начиная с версии jQuery 1.4, вы можете использовать $.contains().

var test = $("<div>");
$.contains(window.document, test[0]);  // false

$("body").append(test);
$.contains(window.document, test[0]);  // true
3 голосов
/ 02 августа 2012

Если строка HTML может быть передана в $(), вы можете использовать parent.length:

$('<div>').length // 1, but it not exist on page

но

$('<div>').parent().length // 0
3 голосов
/ 08 июля 2009

Я написал сообщение об этом в моем блоге

if ( $('#element_id').length > 0 )
   console.log('the element with element_id exists in the DOM');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...