2010-03-15 11 views

Respuesta

1

Fui con la sugerencia de Ariel Popovsky de usar filtro, aunque si lo necesitaba en muchos lugares, utilizaría la sugerencia de petersendidit de crear un selector de clientes.

La diferencia (importante) es que se debe verificar la propiedad .specified. IE siempre devuelve más de 80 atributos.

Nota: incluso esto no es 100%. Hay algunos atributos, como INPUT .value, que son casos especiales, pero dado que estoy usando un DIV, puedo ignorarlos.

$("div").filter(function() 
{ 
    for (var i = 0; i < this.attributes.length; i++) 
    { 
     var attr = this.attributes[i]; 
     if (attr.specified) 
     { 
      return true; 
     } 
    } 
    return false; 
}) 
6

Yo no lo creo, pero esto debe hacer el truco

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

y lo contrario:

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

Tal if($('.class').attr('*:attr').length > 0)

+0

El método attr no puede hacer selecciones como esa http://api.jquery.com/attr/ – PetersenDidIt

5

Usted podría crea tu propio selector sin atributos:

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

$("div:noAttrs") 
Cuestiones relacionadas