Я могу проверить, имеет ли элемент определенный атрибут с:
if ($('#A').attr('myattr') !== undefined) {
// attribute exists
} else {
// attribute does not exist
}
Как я могу проверить, имеет ли элемент какой-либо атрибут?
Спасибо
Вот функция, которая определяет, имеет ли любой из элементов, соответствующих селектору, хотя бы один атрибут:
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');
}
Если вы хотите узнать, есть ли у элемента определенный атрибут, просто сделайте следующее:
if ($('#something').is('[attribute]')) {
// ...
}
Не весь код jQuery, но работать будет
$("a").click(
function () {
if($("a").get(0).attributes > 0)
alert("it has attributes");
})
Вам понадобится информация из Get all Attributes from a HTML element with Javascript/jQuery