首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery添加表单元素迭代ids

JQuery添加表单元素迭代ids
EN

Stack Overflow用户
提问于 2012-05-18 22:42:45
回答 1查看 409关注 0票数 0

我不关心表单中的内容,只想在每次单击add时添加一组新的内容。但是,我将添加一些条件字段。但是考虑到这一点,我真的需要迭代in吗?克隆事件是处理这个问题的最佳方式吗?

代码语言:javascript
复制
<div id="wrapper">
<div id="condition-1">
  <select id="trigger-1" class="trigger">
      <option value="0">Select...</option>
      <option value="1">View Count</option>
      <option value="2">Comment Count</option>
  </select>
  <select id="operator-1" class="operator">
      <option value="0">Select...</option>
      <option value="1">Is Greater Then</option>
      <option value="2">Less Than</option>
  </select>
  <div id="input-1" class="input">
      <input id="number-1"></input>
  </div>
</div>

代码语言:javascript
复制
<div id="add-1" class="add">Add more</div>

我已经挖掘了很多jQuery .clone()的例子,还没能将任何例子应用到这样的结构中。我的目标是每次单击“添加更多”时添加一组新的表单元素。我不关心它是否克隆了实际的内容,只想克隆,然后适当地迭代id。

我尝试使用类似如下的方法:

代码语言:javascript
复制
var cur_num = 1;

var cloned = $("#condition-" + cur_num).clone(true, true).get(0);

++cur_num;

cloned.id = "condition-" + cur_num;                  // Change the div itself.
$(cloned).find("*").each(function(index, element) {   // And all inner elements.
    if(element.id)
    {
        var matches = element.id.match(/(.+)_\d+/);
        if(matches && matches.length >= 2)            // Captures start at [1].
            element.id = matches[1] + "-" + cur_num;
    }
});

$(cloned).appendTo($("#condition-wrapper"));*/

上面的代码块将克隆并附加我想要的块。但当它将第一个条件id迭代到# condition -2时,之后的每个块都会出现#condition-2,而我不知道如何将condition-1的子代更改为trigger-2 operator-2。感谢您的帮助,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-19 00:18:52

尝尝这个

代码语言:javascript
复制
$(function(){
$('.add').bind('click',function(){

    var $this=$(this),
        $cloned=$this.prev().clone(),
        re=/(\d+)$/,
        counter=1,
        cid=$cloned.attr('id').replace(re,function(n){
            return counter+=parseInt(n);
        });

        $cloned.attr({id:cid})
        .find('[id]')
        .each(function(i,o){
          var iid=$(o).attr('id').replace(re,counter);
          $(o).attr({id:iid});
        })
        .end()
        .insertBefore($this);
});
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10654732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档