Существует ли селектор jQuery, чтобы проверить, имеет ли тег какие-либо атрибуты?

В попытке выбрать элементы, которые имеют любые атрибуты, следующие броски синтаксическая ошибка jQuery.

$("div[*]")

Существует ли селектор, чтобы проверить, имеет ли тег какие-либо атрибуты?

Протестированный с jQuery 1.3

7
задан Doug Domeny 15 March 2010 в 15:11
поделиться

4 ответа

Я согласился с предложением Ариэля Поповского использовать фильтр, хотя, если мне это нужно во многих местах, я бы использовал предложение 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;
})
1
ответ дан 6 December 2019 в 21:12
поделиться

Вы можете создать свой собственный селектор без атрибутов:

$.expr[':'].noAttrs = function( objNode  ){
    if (objNode.attributes.length) return( true );
    return( false );
}

$("div:noAttrs")
5
ответ дан 6 December 2019 в 21:12
поделиться

Я так не думаю, но это должно помочь

$('*').filter(function(){return this.attributes.length;})

и наоборот:

$('*').filter(function(){return !this.attributes.length;})
6
ответ дан 6 December 2019 в 21:12
поделиться

Возможно if ($ ('. Class'). Attr ('*: attr'). Length> 0)

0
ответ дан 6 December 2019 в 21:12
поделиться
Другие вопросы по тегам:

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