2010-05-20 2 views
102

Я использую селекторы Jquery, особенно селектор ID:Определение того JQuery не нашел какой-либо элемент

$("#elementId")... 

Как я должен определить, был ли Jquery найден элемент или нет? Даже если элемент с указанным идентификатором не существует следующее утверждение дать мне: [object Object]

alert($("#idThatDoesnotexist")); 

ответ

159

$('#idThatDoesnotexist').length является то, что вы ищете. (Если он не находит ничего, это будет === 0.) Таким образом, ваш условный оператор, вероятно, следует:

if($('#id').length) { /* code if found */ } else { /* code if not found */ }

Вы получаете объект, возвращаемый из этого предупреждения, потому что JQuery (почти) всегда возвращает «JQuery объект», когда вы используйте его, который является оберткой для найденных элементов jQuery, которые разрешают цепочку методов.

+3

Вам не нужен нуль, $ ('# id'). Достаточно длины (ноль == false в javascript) – David

+10

@ Давил тот факт, что вы не _Need_, это не обязательно делает его избыточным, на первый взгляд ИМО это делает его более ясным. – Abir

+1

@Abir: Это делает его более понятным, пока вы не используете синтаксис без него, проверяя правду, а не явно 0. Я предлагаю просто привыкнуть к синтаксису без '== 0', вы увидите его везде. –

23

Futuraprime правильно, но вы можете сократить свой синтаксис, выполнив следующие действия:

if ($("#id").length) { 
    //at least one element was found 
} else { 
    //no elements found 
} 
8
!$.isEmptyObject($.find('#id')) 

Это возвращает истину, если элемент существует и ложно, если оно не делает.

5
$('#my_selector').length > 0 
$('#my_selector').get(0) !== undefined 
$('#my_selector')[0] !== undefined 

Это основное, теперь делайте все, что хотите.

Смежные вопросы