我想在jQuery中選擇具有任意data
屬性的所有元素。這可能嗎?我知道如何在選擇器中的屬性值中使用通配符,但是我找不到在屬性名稱中使用通配符的方法。如何將元素與jQuery中的任何數據屬性進行匹配?
我不能使用.data()
,因爲它也匹配窗口等其他對象。我只想在HTML中選擇具有data
屬性的元素。
我想在jQuery中選擇具有任意data
屬性的所有元素。這可能嗎?我知道如何在選擇器中的屬性值中使用通配符,但是我找不到在屬性名稱中使用通配符的方法。如何將元素與jQuery中的任何數據屬性進行匹配?
我不能使用.data()
,因爲它也匹配窗口等其他對象。我只想在HTML中選擇具有data
屬性的元素。
試試這個
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方式,但嘿
這也會捕獲具有數據但沒有數據屬性的元素,fyi。可能會或可能不會成爲OP –
的問題@KevinB我意識到這一點。我不確定這是OP想要的。但我會更新一個純屬性解決方案。 – Johan
不過請注意不建議使用psudoclasses,因爲如果你將它與任何其他s結合起來elector,選擇器不能再由'document.querySelectorAll'處理。我建議使用相同的解決方案,但用.filter()代替。 –