将任何数据属性与jQuery同步

将任何数据属性与jQuery同步,jquery,custom-data-attribute,Jquery,Custom Data Attribute,我有这样一个全局数据持有者元素: <div class="data-holder" data-id="" data-type="" data-age=""></div> $.each($(this).data(), function (key) { // Because each key is in camelCase, // we need to convert it to

我有这样一个全局数据持有者元素:

<div class="data-holder" data-id="" data-type="" data-age=""></div>
$.each($(this).data(), function (key) {
    // Because each key is in camelCase,
    // we need to convert it to kabob-case and store it in attr.
    var attr = 'data-' + key.replace(/([A-Z])/g, '-$1').toLowerCase(); 
    // Remove the attribute.
    // $(this).removeAttr(attr);
    alert($(this).attr(attr));    
});
我想如果我这样使用它:

<div class="data-holder" data-id="" data-type="" data-age=""></div>
$.each($(this).data(), function (key) {
    // Because each key is in camelCase,
    // we need to convert it to kabob-case and store it in attr.
    var attr = 'data-' + key.replace(/([A-Z])/g, '-$1').toLowerCase(); 
    // Remove the attribute.
    // $(this).removeAttr(attr);
    alert($(this).attr(attr));    
});
我将获得当前元素的属性值。但我得到的是“未定义的”


有什么想法吗?谢谢

首先,您找到的函数不会删除数据属性,而是更改属性的写入方式,这不是您想要的

此外,我建议在你的DIV中添加一个ID“dataholder”,而不是一个类(如果它是全局的)。它将帮助您确保页面中只有一个(这将改变$(“#data holder”)的示例)

至于代码,下面是我的建议。我添加了一个适用于DIV的click事件,其中包含要单击以更新的数据。data holder

示例分区:

<div class="element-with-data" data-id="24124" data-type="something" data-age="25">

(受此答案启发:)

首先,您找到的函数不会删除数据属性,但会更改属性的写入方式,这不是您想要的

此外,我建议在你的DIV中添加一个ID“dataholder”,而不是一个类(如果它是全局的)。它将帮助您确保页面中只有一个(这将改变$(“#data holder”)的示例)

至于代码,下面是我的建议。我添加了一个适用于DIV的click事件,其中包含要单击以更新的数据。data holder

示例分区:

<div class="element-with-data" data-id="24124" data-type="something" data-age="25">

(受此答案启发:)

数据[i]
未定义。@mondi$('.element with data')。on('click'…必须与您的div相对应。我将“.element with data”作为一个类示例,因为我不知道您的div是什么样子。您可以添加“console.log(evt.target,data);”在$.each中查看是否捕获了正确的元素。
data[i]
未定义。@mondi$('.element with data')。on('click'…必须与您的div相对应。我将“.element with data”作为一个类示例,因为我不知道您的div是什么样子。您可以添加“console.log(evt.target,data);”在$.each中查看是否捕获了正确的元素。是否可以添加包含数据id、数据年龄、数据类型的元素示例?(在html标记中)是否可以添加包含数据id、数据年龄、数据类型的元素示例?(在html标记中)