2015-02-04 3 views
0

Мне нужно установить определенное значение для элемента, если этот элемент существует.Как проверить, существует ли элемент в JQuery?

var a = jQuery("#abc"); 
if(a) { 
    a.val("something"); 
} 

Для этого, у меня проверить a.length, чтобы проверить элемент выходит.

Что произойдет, если я прямо установил значение без проверки наличия элемента или нет?

Потому что, если я делаю следующее

jQuery("#abc").val("dfd"); 

Я не получаю сообщение об ошибке в хроме, когда элемент нет. Итак, могу ли я продолжать использовать вот так?

или

любое обходное решение?

Помогите оценить!

+2

Вам не нужно его проверять. так как вызов '.val()' над пустым объектом jquery не повредит нам. –

+0

Я думаю, что всем не хватает части OP, сказанной: «Для этого я должен проверить a.length, чтобы проверить, что элемент завершает». Он уже знает о '.length', не нужно предлагать его снова. – DontVoteMeDown

ответ

2

Что произойдет, если я прямо установил значение без проверки наличия элемента или нет?

Ничего. Вызов методов jQuery для пустого объекта jQuery (set) не вызывает проблемы, он просто ничего не делает. Это одна из замечательных особенностей концепции на основе набора, используемой в jQuery. Эквивалентный код DOM (document.getElementById("abc").value = "something";) будет выбросить ошибку, но версия jQuery не поддерживает.

В частности, если множество JQuery пусто:

  • Вызов сеттер методов (например, ваш val вызова) становится не-оп.

  • Вызов газопоглотителя методов   —, например, var x = $("#foo").val();   — возвращает значение undefined.

  • Вызов обхода методов   —, например, var divs = $("#foo).find("div");   — дает вам новый пустой набор.

Вам только нужно проверить (используя if (a.length), как вы сказали, или if (a[0])), если вы на самом деле все равно.

jQuery("#abc").val("dfd");

Я не получаю сообщение об ошибке в хроме, когда элемент нет. Итак, могу ли я продолжать использовать вот так?

Yup.

0

Метод jQuery's val() просто устанавливает (или получает) значение каждого соответствующего элемента. Если нет соответствующего элемента, для установки (или получения) значения не будет.Вам не нужно проверять, существует ли элемент в первую очередь.

От jQuery's val() documentation:

Описание: Установить значение каждого элемента в наборе соответствующих элементов.

Если нет согласованных элементов, ничего не произойдет.

0

Попробовать -

jQuery("#abc").length > 0 
0

Да, вы можете спокойно продолжать. JQuery просто выполняет функцию для всех элементов, найденных селектором, - если их нет, ничего не делает. Ошибок нет.

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