2010-03-15 22 views

cevap

1

Ariel Popovsky'nin filtreyi kullanma önerisiyle birlikte gittim, ancak buna pek çok yerde ihtiyacım olursa, petersendidit'in bir müşteri seçicisi oluşturma önerisini kullanırdım.

(önemli) fark, .specified özelliğinin kontrol edilmesi gerektiğidir. IE her zaman 80'den fazla özniteliği döndürür.

Not: Bu bile% 100 değildir. Özel durumlar olan INPUT .value gibi bazı öznitelikler vardır, ancak DIV kullanıyorum, onları görmezden gelebilirim.

$("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

ben öyle düşünmüyorum jQuery 1.3 ile test edilmiştir ancak bu hileyi

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

ve tersini yapmak gerekir: Belki

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

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

+0

Attr yöntemi, http://api.jquery.com/attr/ gibi seçimleri yapamaz – PetersenDidIt

5

Yapabilirsin Hiçbir özellik için kendi seçicinizi oluşturun:

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

$("div:noAttrs") 
İlgili konular