使用jquery和regex更改元素id

时间:2012-12-16 23:21:59

标签: jquery regex

使用以下代码

<div id="family">
  <input type="text" id="test_0_0"/>
 <input type="text" id="hello_0_0"/>

</div>
 <div id="family1">

  </div>

使用Jquery和regex,我想从family div中复制family1中的相同html但是id为

<input type="text" id="test_1_0"/>
<input type="text" id="hello_1_0"/>

我试过这个但是不起作用

function renumber(){
    var content=$('#family').html();
    var pattern = new RegExp("_0","g");
    var final=content.replace(pattern,"_1");
    $('#family1').html(final);
}

2 个答案:

答案 0 :(得分:1)

尝试

function renumber(){
    var content=$('#family').html();
    var pattern = new RegExp("(\\w)_0", "g");
    var final=content.replace(pattern,"$1_1");
    $('#family1').html(final);
}

http://jsfiddle.net/5njU2/

答案 1 :(得分:0)

通过向每个data-元素添加family属性,您可以确保将其简化为不需要正则表达式。你没有使用任何可能是错误的类,因为你可以做这样的事情来管理所有的增量:

<div class="family" data-familyID="0">
  <input type="text" class="test"/>
   <input type="text" class="hello"/>
</div>

JS从现有的

创建一个新的“family”元素
var lastFamily= $('.family').last()
var newFamily =lastFamily.clone();
var newFamilyID=newFamily.data('familyID')+1;
 /* update familyID and reset inputs*/
 newFamily.data('familyID', newFamilyID).find('input').val('').insertafter(lastFamily);

JS处理输入的更改并获取输入family的当前系列ID

/* delegate to body to account for dynamicly added elements*/
$('body').on('change', '.family input', function(){
    var val=$(this).val(), className=$(this).attr('class'), familyID=$(this).closest('.family').data('familyID');
    alert( className +' #'+familyID+' value='+val);
})