jquery重命名所有属性

标签 jquery

Possible Duplicate:
How can I change HTML attribute names with jQuery?

我有一个大型/复杂的表单,其中包含基于之前选择的问题的不同可用问题。

为了尽量保持井井有条,我有一些同名的重复输入。这就产生了这样的问题:页面下方的输入(即使它们被隐藏)也会覆盖可见的输入。

为了防止这种情况,我已将所有隐藏输入设置为 data-name而不是name属性。

问题 如何更改属性名称。例如:

<input data-name="phone" value="" />
<input data-name="email" value="" />

To
<input name="phone" value="" />
<input name="email" value="" />

最佳答案

鉴于上述 HTML 标记,我建议:

$('input').each(
    function(i,el){
        var data = $(el).data();
        for (datum in data) {
            if (!el[datum]) {
                el[datum] = data[datum];
                el.removeAttribute('data-' + datum);
            }
        }
    });​

JS Fiddle demo .

这使用 jQuery data() 方法创建一个对象,其中的数据(如果存在)附加到由 each() 迭代的当前 jQuery 对象> 方法。

实际上,在上面的示例中,if 检查当前元素是否已经具有同名的属性(因此 name 不会被如果已存在则覆盖),如果不存在则创建该属性。

显式覆盖预先存在的属性:

$('input').each(
    function(i, el) {
        var data = $(el).data();
        for (datum in data) {
            el[datum] = data[datum];
            el.removeAttribute('data-' + datum);
        }
    });​

JS Fiddle demo .

引用文献:

关于jquery重命名所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12827826/

相关文章:

javascript - 使用 Highcharts 格式化程序导致无法读取未定义的属性 'length'

javascript - 选中复选框时更改父背景

javascript - 覆盖固定在 div 的顶部并保持位置页面滚动

javascript - Jquery,可拖动的div不会使用Firefox在内部自动调整 Accordion 的大小

javascript - 如何使用 javascript 变量使用 jQuery 隐藏元素

javascript - 将表单数据和操作发送到 wordpress admin-ajax.php

javascript - 订购复选框及其标签

jquery - 网站加入表格 - 位置地理坐标

javascript - 使用 jquery ui 自动完成但样式隐藏

javascript - 我可以在淡入/淡出 JQuery 函数中使用 <a> 标签按钮类吗?