使用JQUERY更改输入名称

我正在尝试根据< li>的列表索引更改所有输入名称但似乎根本没有变化.
$('.test').click(function() {
for(var i=0;i<$("li.songs").length;i++)
{
  var ob = $("li.songs").eq(i).clone();
  ob.find('input').each(function()
  {
    this.name = this.name+i;
    alert(this.name); //just checking if does it change
  });      
}
});

现在,警报显示我想要的正确名称,但是当我检查元素并尝试提交表单并显示所有POST值时,名称没有变化.

更改前的预期输出示例:

<li class="songs"><input type="text" name="song" /></li>
<li class="songs"><input type="text" name="song" /></li>
<li class="songs"><input type="text" name="song" /></li>

更改后:

<li class="songs"><input type="text" name="song1" /></li>
<li class="songs"><input type="text" name="song2" /></li>
<li class="songs"><input type="text" name="song3" /></li>

注意:我不希望输入名为歌曲的ARRAY.

解决方法

您正在克隆该对象,因此更改是对副本而不是原始DOM节点进行的.

不要使用clone(),你会没事的.或者这样做:

$("li.songs input").each(function(i) {
  $(this).attr('name',$(this).attr('name') + i);
});

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...