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 });