我努力的目标包含某个词&不是那种你想办法的属性名。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