jQuery属性名称包含

我正在尝试定位包含某个单词的属性名称而不是您想要的那种方式。

让我们说:

如何定位属性名称中包含'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 : //jsfiddle.net/Tyj49/3/

我不确定你能做到这一点。 我已经看过了API,你似乎只能对值进行更深层次的匹配,而不是属性名称本身。

我打算给你一个令人沮丧的建议,“不要这样做”。 ;-)从本质上讲,你所追求的是一堆与一般类别相匹配的div。 不只是data-foo-bar ,而是所有data-foo ! 为什么不直接给所有数据 – 一个可以选择的类名,或者像data-foo="true"这样的单独属性?

换句话说,我并不想严格遵守所提出的问题,而是很想知道用例是什么,以便思考中的横向移动可以有效地解决您的问题。 许多方法皮肤猫和所有这些。

这只是一种替代解决方案。 如果您可以确保元素文本中没有您要查找的属性名称 ,那么您可以做的是获取元素的outerHtml值,然后进行子字符串搜索:

 $("elementsToCheck").each(function () { var elemHtml = $('
').append($(this).clone()).html(); //clone to get the outerHTML if (elemHtml.indexOf("attributeName") >= 0) { // current element contains the attribute with name "attributeName" } });

希望这可以帮助。

试试这个

 $().ready(function() { var test=$('#div_test').data("foo-bar"); alert(test); }); 

HTML:

 

使用.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; }); 

尝试这样的事情

 var element = $('div[data-foo-bar=hello]')​;