我努力的目標包含某個詞&不是那種你想辦法的屬性名。jQuery的屬性名稱包含
可以說我有:
<div data-foo-bar="hello"></div>
我怎樣可以針對其在屬性名'data-foo'
元素?
我努力的目標包含某個詞&不是那種你想辦法的屬性名。jQuery的屬性名稱包含
可以說我有:
<div data-foo-bar="hello"></div>
我怎樣可以針對其在屬性名'data-foo'
元素?
我不認爲你可以針對屬性名稱,你目標屬性值的方法相同。你可以,但是,使用.filter()
在一定程度上有效地做到這一點:
$('div').filter(function() {
for (var property in $(this).data()) {
if (property.indexOf('fooBar') == 0) {
return true;
}
}
return false;
});
注意data-foo-bar
已轉換爲fooBar
。
「屬性選擇器」的參考http://api.jquery.com/category/selectors/ – charlietfl 2012-03-03 05:44:47
我很熟悉jQuery。這些選擇符匹配給定屬性的*值*,而不是屬性名稱。 – Blender 2012-03-03 05:45:56
這一個看起來更好。如果你想稍後緩存被過濾的對象,你可以這樣做:http://jsfiddle.net/Tyj49/4/雖然我會猜測重新想象這種方法可能會長期更好(很難說如果不知道用例),這肯定會得到一票。 – 2012-03-03 05:46:10
嘗試這樣的事情
var element = $('div[data-foo-bar=hello]');
不知道爲什麼,這得到了與votedowns跺着腳,好像最簡單有效的概念至今的http://的jsfiddle .net/wHuV2/ – charlietfl 2012-03-03 05:41:14
OP正試圖匹配屬性* name *,而不是實際值。這個問題有些模棱兩可。 – Blender 2012-03-03 05:42:01
瞭解價值,但屬性是比4行過濾器簡單得多 – charlietfl 2012-03-03 05:43:19
我不知道你能做到這一點。我查看了API,你似乎只能對值進行更深層次的部分匹配,而不是屬性名稱本身。
,我去給你的潛在的令人沮喪的意見,「不這樣做」。 ;-)實質上,你所追求的是一羣與更一般類別匹配的div。不只是data-foo-bar
s,而是全部data-foo
s!爲什麼不只是給所有的數據提供一個你可以選擇的類名,或者像data-foo="true"
這樣的單獨屬性呢?
換句話說,我並不會嚴格按照問題的方式來堅持,而是希望知道用例是什麼,這樣思維上的橫向移動可以同樣有效地解決您的問題。許多方法來剝皮貓等等。
那麼,我的選擇將有2個數據屬性。但我想,如果有一種方法,那麼會想到stackoverflow。 :) – daryl 2012-03-03 05:40:38
你可以寫這個$('[data-foo-bar]')將工作 – charlietfl 2012-03-03 05:46:08
不夠公平,Brogrammer。 ;-) – 2012-03-03 05:48:25
試試這個
$().ready(function() {
var test=$('#div_test').data("foo-bar");
alert(test);
});
HTML:
<div data-foo-bar="hello" id="div_test"></div>
這僅僅是一個替代的解決方案。 如果可以確保你正在尋找的屬性的名字沒有出現在元素文本,你可以做的是讓元素的outerHtml值,然後做一個字符串搜索:
$("elementsToCheck").each(function() {
var elemHtml = $('<div>').append($(this).clone()).html(); //clone to get the outerHTML
if (elemHtml.indexOf("attributeName") >= 0) {
// current element contains the attribute with name "attributeName"
}
});
希望這有助於。
使用.data()
獲取元素的所有數據屬性,然後使用.filter
獲取具有data-validation*
屬性的元素。
var validated_elements = $("p").filter(function() {
var found = false;
$.each($(this).data(function(key) {
if (key.match(/^data-validation/)) {
found = true;
return false;
}
}
return found;
});
您可以使用自定義jQuery選擇:http://stackoverflow.com/a/26657510/1414562 – 2015-10-05 07:41:27