我有INPUT HTML标记,其类型为隐藏在视图中。它看起来如下:
<input type="hidden" data-abc-value1="value1" data-abc-value2="value2" data-abc-
value3="value3"/>
我想获取数据属性的值(data-abc-value1,data-abc-value2,data-abc-value3)而不传递元素id。
我能以某种方式找到元素的匹配数据 - abc(这是常见的)属性并获取其值。因此我可以避免依赖于元素id来获取数据 - *值。
答案 0 :(得分:2)
试试这段代码,这可能对您有所帮助
<强> HTML 强>
<input type="hidden" data-abc-value1="value1" data-abc-value2="value2" data-abc-value3="value3" />
<强>脚本强>
$('input[type="hidden"]').each(function(i, e){
$.each(e.attributes, function(j,v){
if(/^data-abc/.test(v.nodeName)) {
console.log(v.nodeName, v.nodeValue);
}
});
});
答案 1 :(得分:2)
jQuery没有提供按部分属性名称查询的方法,因此您必须获取所有隐藏的输入,然后使用正则表达式按属性过滤结果:
$(function() {
var inputs = $('input[type="hidden"]').filter(function() {
var attrs = this.attributes; //get attribute collection for this element
for(var i=0; i<attrs.length; i++) {
if(/data-abc-*/.test(attrs[i].name)) {
return true; //adds this element to the jquery collection
}
}
return false;
});
//do something with inputs
});
答案 2 :(得分:1)
当jQuery可用时,使用.attr()
函数获取w3c无效属性。
还可以使用.eq(0)
确保选择第一个且仅有一个隐藏输入字段。如果有更多隐藏的输入字段,则无法保证这将起作用。
var inp1 = $("input[type=hidden]").eq(0),
val1 = inp1.attr("data-abc-value1"),
val2 = inp1.attr("data-abc-value2"),
val3 = inp1.attr("data-abc-value3");
答案 3 :(得分:1)
在jsFiddle http://jsfiddle.net/vijaypatel/xk42F/
查看样本$.fn.filterData = function (set) {
var elems = $([]);
this.each(function (i, e) {
$.each($(e).data(), function (j, f) {
if (j.substring(0, set.length) == set) {
elems = elems.add($(e));
}
});
});
return elems;
}
$.each($('input').filterData('abc'), function (index, value) {
alert($(this).attr('data-abc-value1'));
});
答案 4 :(得分:0)
您可以$("input[type='hidden']").attr('data-abc-value1')
或$('input[data-abc-value1]').attr('data-abc-value1')