我有一个大/复杂的表单,根据之前选择的问题提供不同的可用问题。
为了尝试保持这个有点组织,我有一些具有相同名称的重复输入。这就产生了一个问题,即即使它们被隐藏在页面下方的输入也会覆盖可见输入。
为了防止这种情况,我设置了所有隐藏的输入,而不是data-name
属性。
问题 如何更改属性名称。 E.g:
name
答案 0 :(得分:2)
$('input[data-name]').each(function(){
$(this).attr('name', $(this).attr('data-name')); //does the switch
$(this).removeAttr('data-name'); //clears out the old one if you need to
});
答案 1 :(得分:2)
鉴于上述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);
}
});
参考文献: