Как правило, в JavaScript я делаю что-то вроде ниже, чтобы проверить, существует ли элемент:
if (document.getElementById('lblUpdateStatus')) {
$("#lblUpdateStatus").text("");
}
Но, используя jQuery - как я могу сделать то же самое?
Как правило, в JavaScript я делаю что-то вроде ниже, чтобы проверить, существует ли элемент:
if (document.getElementById('lblUpdateStatus')) {
$("#lblUpdateStatus").text("");
}
Но, используя jQuery - как я могу сделать то же самое?
Метод get возвращает согласованные элементы DOM:
if($("#lblUpdateStatus").get(0)){
$("#lblUpdateStatus").click(function () { ... });
}
но я не уверен, что это быстрый метод.
$
возвращает массив совпадающих элементов, поэтому проверьте свойство length, и вы хорошо пойдете
if ($('#lblUpdateStatus').length) {
$("#lblUpdateStatus").text("");
}
Дело в том, что jQuery выполнит только запрошенное действие, если элемент существует:-), поэтому вам нужно только:
$("#lblUpdateStatus").text("");
Я не вижу причины использовать jQuery только ради этого. $('#lblUpdateStatus')
будет в основном идти прямо к document.getElementById('lblUpdateStatus')
, так как селектор имеет в нем якорь, поэтому вы на самом деле ничего не получаете. Кроме того, для проверки только того, существует ли объект DOM, его перенос в объект jQuery будет создавать довольно много накладных расходов.
С другой стороны, если просто изменить текстовое свойство объекта - это то, что вы хотите сделать, вам не нужно проверять его существование, если вы используете jQuery.
if (document.getElementById('lblUpdateStatus')) {
$("#lblUpdateStatus").text("");
}
будет делать то же самое, что иметь только
$("#lblUpdateStatus").text("");
Начиная с jQuery 1.4, вы можете использовать $.contains()
.
var test = $("<div>");
$.contains(window.document, test[0]); // false
$("body").append(test);
$.contains(window.document, test[0]); // true
Я написал сообщение об этом на мой блог
if ( $('#element_id').length > 0 )
console.log('the element with element_id exists in the DOM');
Если HTML-строку можно передать в $()
, вы можете использовать parent.length
:
$('<div>').length // 1, but it not exist on page
но
$('<div>').parent().length // 0