0

使用以下代码

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

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

  </div>

使用 Jquery 和正则表达式,我想从家庭 div 复制家庭 1 中的相同 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);
}
4

2 回答 2

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/

于 2012-12-16T23:30:35.663 回答
0

您可以通过向每个元素添加一个data-属性来确保将其简化为根本不需要正则表达式。family您没有使用任何可能是错误的类,因为您可以执行以下操作来管理所有增量:

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

JS 从现有元素创建一个新的“家庭”元素

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处理输入的变化并获取输入的当前家庭IDfamily

/* 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);
})
于 2012-12-16T23:52:02.903 回答