2014-02-12 55 views
1

我想在jQuery中選擇具有任意data屬性的所有元素。這可能嗎?我知道如何在選擇器中的屬性值中使用通配符,但是我找不到在屬性名稱中使用通配符的方法。如何將元素與jQuery中的任何數據屬性進行匹配?

我不能使用.data(),因爲它也匹配窗口等其他對象。我只想在HTML中選擇具有data屬性的元素。

+0

不過請注意不建議使用psudoclasses,因爲如果你將它與任何其他s結合起來elector,選擇器不能再由'document.querySelectorAll'處理。我建議使用相同的解決方案,但用.filter()代替。 –

回答

1

試試這個

var $result = $('*').filter(function(){ 
    return !$.isEmptyObject($(this).data()); 
}); 

,或者如果你只是談論的屬性:

var $result = $('*').filter(function(){ 

    var ret = false; 

    $.each(this.attributes, function() { 

     if(/^data-/.test(this.nodeName)){ 
      ret = true; 
      return false; //to break the loop 
     } 
    }); 

    return ret; 
}); 

也許不是最efficent方式,但嘿

http://jsfiddle.net/M5bAY/

+2

這也會捕獲具有數據但沒有數據屬性的元素,fyi。可能會或可能不會成爲OP –

+1

的問題@KevinB我意識到這一點。我不確定這是OP想要的。但我會更新一個純屬性解決方案。 – Johan

相關問題