проверка jQuery, если элемент содержит какой-либо атрибут

Я могу проверить, имеет ли элемент определенный атрибут с:

if ($('#A').attr('myattr') !== undefined) {
    // attribute exists
} else {
    // attribute does not exist
}

Как я могу проверить, имеет ли элемент какой-либо атрибут?

Спасибо

6
задан Mircea 10 February 2010 в 20:21
поделиться

4 ответа

Вот функция, которая определяет, имеет ли любой из элементов, соответствующих селектору, хотя бы один атрибут:

function hasOneOrMoreAttributes(selector) {
    var hasAttribute = false;
    $(selector).each(function(index, element) {
        if (element.attributes.length > 0) {
            hasAttribute = true;
            return false; // breaks out of the each once we find an attribute
        }
    });
    return hasAttribute;
}

Использование:

if (hasOneOrMoreAttributes('.someClass')) {
    // Do something
}

Если вы хотите оперировать выбранными элементами, имеющими хотя бы один атрибут, это еще проще - вы создаете пользовательский фильтр:

// Works on the latest versions of Firefox, IE, Safari, and Chrome
// But not IE 6 (for reasons I don't understand)
jQuery.expr[':'].hasAttributes = function(elem) {
    return elem.attributes.length;
};

Который можно использовать следующим образом:

$(document).ready(function(){
    $('li:hasAttributes').addClass('superImportant');
}
6
ответ дан 8 December 2019 в 04:52
поделиться

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

if ($('#something').is('[attribute]')) {
  // ...
}
9
ответ дан 8 December 2019 в 04:52
поделиться

Не весь код jQuery, но работать будет

$("a").click(
function () {
    if($("a").get(0).attributes > 0)
        alert("it has attributes");
})
2
ответ дан 8 December 2019 в 04:52
поделиться

Вам понадобится информация из Get all Attributes from a HTML element with Javascript/jQuery

2
ответ дан 8 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: