Проверка существования атрибута jquery

Материал из JQuery

Соответствует всем элементам, которые имеют атрибут attributeName. При этом, не важно, какие им заданы значения.

$(‘[title]’) вернет все элементы, содержащие атрибут title
$(‘div [title]’) вернет все элементы с атрибутом title, которые находятся внутри div-элементов
$(‘div[title]’) вернет все div-элементы с атрибутом title (наличие пробела между селекторами имеет значение!)
$(‘div[title]:first’) вернет первый div-элемент, содержащий атрибут title

Замечание: Во всех версиях jQuery, начиная с 1.2, использование символа "@" перед аттрибутом не нужно.

В действии

Все элементы, которые имеют аттрибут id будут обведены красной рамкой:

Очень часто стояла задача проверить, есть ли у тега тот или иной атрибут, так даже и в этой статье — Как сделать Ajax добавление товара к стравнению, я проверяю, есть ли у тега а атрибут href.

Для того, чтобы проверить тег на содержание в нем атрибута, нужно просто немного расширить jQuery методом hasAttr:

How do you check if there is an attribute on an element in jQuery? Similar to hasClass , but with attr ?

9 Answers 9

How about just $(this).is("[name]") ?

The [attr] syntax is the CSS selector for an element with an attribute attr , and .is() checks if the element it is called on matches the given CSS selector.

If you will be checking the existence of attributes frequently, I would suggest creating a hasAttr function, to use as you hypothesized in your question:

You’re so close it’s crazy.

There’s no hasAttr but hitting an attribute by name will just return undefined if it doesn’t exist.

This is why the below works. If you remove the name attribute from #heading the second alert will fire.

Читайте также  Промах сервис новый соперник

Update: As per the comments, the below will ONLY work if the attribute is present AND is set to something not if the attribute is there but empty

Ссылка на основную публикацию
Adblock
detector