将任何数据属性与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标记中)