Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 获取数据-属性值而不传递HTML元素id_Jquery_Html_Dom_Unobtrusive Javascript_Custom Data Attribute - Fatal编程技术网

Jquery 获取数据-属性值而不传递HTML元素id

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(这是常见的)属

我在视图中输入了类型为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(这是常见的)属性并获取其值。这样我就可以避免依赖元素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 JS

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

});
$(函数(){
var inputs=$('input[type=“hidden”]”)。过滤器(函数(){
var attrs=this.attributes;//获取此元素的属性集合

对于(var i=0;i

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

});
$(函数(){
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。我的建议是,与其遍历所有隐藏的输入,不如使用类,至少可以减少迭代次数。