В попытке выбрать элементы, которые имеют любые атрибуты, следующие броски синтаксическая ошибка jQuery.
$("div[*]")
Существует ли селектор, чтобы проверить, имеет ли тег какие-либо атрибуты?
Протестированный с jQuery 1.3
Я согласился с предложением Ариэля Поповского использовать фильтр, хотя, если мне это нужно во многих местах, я бы использовал предложение petersendidit о создании селектора клиентов.
(важное) отличие состоит в том, что необходимо проверить свойство .specified. IE всегда возвращает более 80 атрибутов.
Примечание: даже это не 100%. Есть некоторые атрибуты, такие как INPUT .value, которые являются особыми случаями, но, поскольку я использую DIV, я могу их игнорировать.
$("div").filter(function()
{
for (var i = 0; i < this.attributes.length; i++)
{
var attr = this.attributes[i];
if (attr.specified)
{
return true;
}
}
return false;
})
Вы можете создать свой собственный селектор без атрибутов:
$.expr[':'].noAttrs = function( objNode ){
if (objNode.attributes.length) return( true );
return( false );
}
$("div:noAttrs")
Я так не думаю, но это должно помочь
$('*').filter(function(){return this.attributes.length;})
и наоборот:
$('*').filter(function(){return !this.attributes.length;})
Возможно if ($ ('. Class'). Attr ('*: attr'). Length> 0)