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);
}
}
});
这使用 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);
}
});
引用文献:
-
data()
. -
each()
. -
removeAttribute()
.
关于jquery重命名所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12827826/