javascript - 在jQuery中使用clone()更新id并将加号按钮更改为减号按钮

标签 javascript jquery

当我在 StackOverflow 上搜索克隆函数时,我得到了很多例子。但我以不同的方式使用它。

当我单击“+”按钮时,它必须克隆整个 div,并且对于所有行,第一个 div“+”图标必须更改为“-”。引用图片如下。

这是我的 HTML 代码

<div class="container-fluid cloned-row">
<div class="row-fluid">    
    <div class="col-xs-12">
        <div id="div_form1">
            <input type = "text" id="txt_fname" name="txt_fname" placeholder="First Name"/>
            <select id="opt_sel" name="opt_sel">
                <option value="default">
                    Select
                </option>
                <option value="banana">
                    Bananana
                </option>
            </select>   
            <button id="btn_sub" class="plus"></button>
        </div>
    </div>
</div>

这是我的 JavaScript 代码

var i=1;
$("#btn_sub").click(function (){
  $(".cloned-row:first").clone().insertAfter(".cloned-row:last")each(function() {
     $(this).attr({
      'id': function(_, id) { return id + i },
      'name': function(_, name) { return name + i },
      'value': ''               
   });     
  });
  i++;
 });

这是我的 JS Fiddle Link

由于我是 jQuery 新手,我在克隆功能方面遇到了很多困难。另外,我不明白为什么没有生成动态 ID。

Reference Image

最佳答案

您可以使用 CSS 更轻松地显示/隐藏元素。例如,如果您向每行添加加号和减号:

<button class="plus"></button>
<button class="minus"></button>

这将显示所有内容的减号,但最后一行的加号:

.cloned-row .plus {
     display: none;
}

.cloned-row:last-child .minus {
    display: none;
}

.cloned-row:last-child .plus {
    display: inline-block;
}

然后使用事件委托(delegate)将 .plus 上的任何点击处理为“添加行”

演示:http://jsfiddle.net/4u9ud167/4/

关于javascript - 在jQuery中使用clone()更新id并将加号按钮更改为减号按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31906838/

相关文章:

javascript - 动态创建 CSS 类

javascript - 不一致实例

Javascript:根据单词更改单词颜色?

javascript - 调用 window.print() 时会触发什么事件?

javascript - Bootstrap 模式窗口未显示

javascript - 在Sinon.js和instanceof中模拟类

php - 使用 jQuery 的可折叠菜单

javascript - 如何使div两侧的边距保持不变

javascript - 如何防止在 Javascript 代码执行之前出现 html 文本

javascript - 添加按钮以切换浏览器