Jquery 获取数据-属性值而不传递HTML元素id
我在视图中输入了类型为hidden的HTML标记,如下所示:Jquery 获取数据-属性值而不传递HTML元素id,jquery,html,dom,unobtrusive-javascript,custom-data-attribute,Jquery,Html,Dom,Unobtrusive Javascript,Custom Data Attribute,我在视图中输入了类型为hidden的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(这是常见的)属
<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获取数据-*值。当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");
当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");
你可以把它们弄到手
$("input[type='hidden']").attr('data-abc-value1')
//or
$('input[data-abc-value1]').attr('data-abc-value1')
你可以把它们弄到手
$("input[type='hidden']").attr('data-abc-value1')
//or
$('input[data-abc-value1]').attr('data-abc-value1')
请尝试此代码,这可能会对您有所帮助 HTML
<input type="hidden" data-abc-value1="value1" data-abc-value2="value2" data-abc-value3="value3" />
演示JS试试这段代码,这可能会对您有所帮助 HTML
<input type="hidden" data-abc-value1="value1" data-abc-value2="value2" data-abc-value3="value3" />
Demo JSjQuery不提供按部分属性名称进行查询的方法,因此您必须获取所有隐藏的输入,然后使用正则表达式按属性筛选结果:
$(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
});
$(函数(){
var inputs=$('input[type=“hidden”]”)。过滤器(函数(){
var attrs=this.attributes;//获取此元素的属性集合
对于(var i=0;ijQuery不提供按部分属性名称进行查询的方法,因此您必须获取所有隐藏的输入,然后使用正则表达式按属性筛选结果:
$(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
});
$(函数(){
var inputs=$('input[type=“hidden”]”)。过滤器(函数(){
var attrs=this.attributes;//获取此元素的属性集合
对于(var i=0;i请在JSFIDLE查看示例
在JSFIDLE查看示例
它确实有效,但是否有效?这将遍历所有隐藏的输入及其两个嵌套的属性,因此复杂性呈指数级增长…为什么不为与之关联的每个输入/记录使用某种唯一id?当然,使用唯一id将有效并提高性能,但@SCP不想为某些r使用id伊森。我的建议是,至少可以减少迭代次数,而不是遍历所有隐藏的输入使用类。它确实有效,但有效吗?它在两个嵌套的each中遍历所有隐藏的输入及其所有属性,因此复杂性呈指数增长…为什么不为每个输入/记录使用某种唯一的ID呢当然,使用唯一id会有效并提高性能,但是@SCP出于某种原因不想使用id。我的建议是,与其遍历所有隐藏的输入,不如使用类,至少可以减少迭代次数。