jquery重命名所有属性
可能重复:
如何使用jQuery更改HTML属性名称?
我有一个大/复杂的表单,根据之前选择的问题提供不同的可用问题。
为了尝试保持这个有点组织,我有一些具有相同名称的重复输入。 这会产生这样的问题:即使隐藏页面进一步向下输入也会覆盖可见输入。
为了防止这种情况,我使用data-name
而不是name
属性设置了所有隐藏的输入。
问题如何更改属性名称。 例如:
To
鉴于上述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小提琴演示 。
这使用jQuery data()
方法创建一个对象,其中包含数据(如果存在),附加到由each()
方法迭代的当前jQuery对象。
实际上,在上面的示例中, if
检查当前元素是否已经具有相同名称的属性(因此如果name
已经存在则不会覆盖该name
),如果它不存在,则创建该名称属性/属性。
要显式覆盖预先存在的属性:
$('input').each( function(i, el) { var data = $(el).data(); for (datum in data) { el[datum] = data[datum]; el.removeAttribute('data-' + datum); } });
JS小提琴演示 。
参考文献:
-
data()
。 -
each()
。 -
removeAttribute()
。
$('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 });