Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery添加表单元素迭代ID_Javascript_Jquery - Fatal编程技术网

Javascript JQuery添加表单元素迭代ID

Javascript JQuery添加表单元素迭代ID,javascript,jquery,Javascript,Jquery,我不关心表单中的内容,只想在每次单击“添加”时添加一组新内容。不过,我将添加一些条件字段。但考虑到这一点,我真的需要迭代ID吗?克隆事件是处理此问题的最佳方式吗 <div id="wrapper"> <div id="condition-1"> <select id="trigger-1" class="trigger"> <option value="0">Select...</option> <op

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

<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>
上面的代码块将克隆并附加我想要的代码块。但当它将第一个条件id迭代到条件2时,之后的每个块都会出现条件2,我不知道如何将条件1的子项更改为触发器2运算符2。非常感谢您的帮助,谢谢

试试这个

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

为什么不首先使用一个类并省去迭代ID的麻烦呢?这就是它们的设计目的。特别是在使用.clone本身时,表示您想通过克隆。仅克隆事件?对克隆一点也不特别,只是看起来像是人们使用的。在我看来,在处理表单时,我需要迭代ID以进行控制。另外,将向该字段添加一些条件字段,因此当选择“查看计数”时,可能会出现一个或多个不同的框。如果不是条件部分,我根本不关心ID。而且,即使是在处理表单时,也可能有一种优雅的解决方案,可以省去id号,只需迭代id即可。
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"));*/
$(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);
});
})