我正在尝试定位包含某个单词的属性名称&不是你想的那种方式。
让我说我有:
<div data-foo-bar="hello"></div>
如何定位属性名称中包含'data-foo'
的元素?
答案 0 :(得分:12)
我认为您不能像定位属性值一样定位属性名称。但是,您可以使用.filter()
来有效地执行此操作:
$('div').filter(function() {
for (var property in $(this).data()) {
if (property.indexOf('fooBar') == 0) {
return true;
}
}
return false;
});
请注意,data-foo-bar
已转换为fooBar
。
答案 1 :(得分:4)
我不确定你能做到这一点。我已经看过API,你似乎只能对值进行更深层次的部分匹配,而不是属性名称本身。
我会给你一个令人沮丧的建议,“不要这样做”。 ;-)从本质上讲,你所追求的是一堆与一般类别相匹配的div。不只是data-foo-bar
s,而是所有data-foo
s!为什么不直接给所有数据 - 您可以选择的类名,或者像data-foo="true"
这样的单独属性?
换句话说,我并不想严格遵守所提出的问题,而是很想知道用例是什么,以便思考中的横向移动可以有效地解决您的问题。许多方法皮肤猫和所有这些。
答案 2 :(得分:1)
这只是一种替代解决方案。 如果您可以确保元素文本中没有您要查找的属性名称,那么您可以做的是获取元素的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"
}
});
希望这有帮助。
答案 3 :(得分:0)
试试这个
$().ready(function() {
var test=$('#div_test').data("foo-bar");
alert(test);
});
HTML:
<div data-foo-bar="hello" id="div_test"></div>
答案 4 :(得分:0)
使用GuildMember
获取元素的所有数据属性,然后使用.data()
获取具有.filter
属性的元素。
data-validation*
答案 5 :(得分:-5)
尝试这样的事情
var element = $('div[data-foo-bar=hello]');