javascript - 图标克隆元素放在错误的位置

标签 javascript html

当我单击 Input 1 旁边的 + 时,会克隆一行,并在第一行旁边出现 -,即正是我想要的:-)

但是当我按 Input 2 旁边的 + 时,- 图标会出现在 Input 1 行旁边.

我不知道我做错了什么,因为当您单击 Input 2 旁边的 + 时,我想要接下来的 -Input 2

的第一行

$(function() {
  $(document).on('click', '.btn-add', function(e) {
    e.preventDefault();

    var controlForm = $('.controls form:first'),
      currentEntry = $(this).parents('.entry:first'),
      newEntry = $(currentEntry.clone()).appendTo(controlForm);

    newEntry.find('input').val('');
    controlForm.find('.entry:not(:last) .btn-add')
      .removeClass('btn-add').addClass('btn-remove')
      .removeClass('btn-success').addClass('btn-danger')
      .html('<span>-</span>');
  }).on('click', '.btn-remove', function(e) {
    $(this).parents('.entry:first').remove();

    e.preventDefault();
    return false;
  });
});
.entry {
  text-align: left;
  margin-bottom: 25px;
  margin-top: 25px;
}

.entry input {
  height: 50px;
  padding: 10px;
}

.entry input:nth-child(2) {
  margin-left: 25px;
  width: 66%
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="controls">
  <form class="school_form" role="form" autocomplete="off">
    <div class="entry input-group">
      <input type="text" name="opl_datum" placeholder="Periode Input 1" class='enableOnInput' disabled='disabled'>
      <input type="text" name="school" placeholder="Input 1" class='enableOnInput' disabled='disabled'>
      <span class="input-group-btn">
                           				 <button class="btn btn-success btn-add" type="button">
                                		<span>+</span>
      </button>
      </span>
    </div>
  </form>
</div>
<div class="controls">
  <form class="werk_form" role="form" autocomplete="off">
    <div class="entry input-group">
      <input type="text" name="werk_datum" placeholder="Periode Input 2" class='enableOnInput' disabled='disabled'>
      <input type="text" name="werkgever" placeholder="Input 2" class='enableOnInput' disabled='disabled'>
      <span class="input-group-btn">
                           				 <button class="btn btn-success btn-add" type="button">
                                		<span>+</span>
      </button>
      </span>
    </div>
  </form>
</div>

最佳答案

var controlForm = $('.controls form:first')//即使您在第二个控件表单上,您也可以选择第一个控件

所以将其替换为

var controlForm = $(this).closest('.controls').find('form:first')//这也是选择最接近的一个

$(function() {
  $(document).on('click', '.btn-add', function(e) {
    e.preventDefault();

    var controlForm = $(this).closest('.controls').find('form:first'),//you have to select colsest controls
      currentEntry = $(this).parents('.entry:first'),
      newEntry = $(currentEntry.clone()).appendTo(controlForm);

    newEntry.find('input').val('');
    controlForm.find('.entry:not(:last) .btn-add')
      .removeClass('btn-add').addClass('btn-remove')
      .removeClass('btn-success').addClass('btn-danger')
      .html('<span>-</span>');
  }).on('click', '.btn-remove', function(e) {
    $(this).parents('.entry:first').remove();

    e.preventDefault();
    return false;
  });
});
.entry {
  text-align: left;
  margin-bottom: 25px;
  margin-top: 25px;
}

.entry input {
  height: 50px;
  padding: 10px;
}

.entry input:nth-child(2) {
  margin-left: 25px;
  width: 66%
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="controls">
  <form class="school_form" role="form" autocomplete="off">
    <div class="entry input-group">
      <input type="text" name="opl_datum" placeholder="Periode Input 1" class='enableOnInput' disabled='disabled'>
      <input type="text" name="school" placeholder="Input 1" class='enableOnInput' disabled='disabled'>
      <span class="input-group-btn">
                           				 <button class="btn btn-success btn-add" type="button">
                                		<span>+</span>
      </button>
      </span>
    </div>
  </form>
</div>
<div class="controls">
  <form class="werk_form" role="form" autocomplete="off">
    <div class="entry input-group">
      <input type="text" name="werk_datum" placeholder="Periode Input 2" class='enableOnInput' disabled='disabled'>
      <input type="text" name="werkgever" placeholder="Input 2" class='enableOnInput' disabled='disabled'>
      <span class="input-group-btn">
                           				 <button class="btn btn-success btn-add" type="button">
                                		<span>+</span>
      </button>
      </span>
    </div>
  </form>
</div>

关于javascript - 图标克隆元素放在错误的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52552550/

相关文章:

javascript - 无法设置未定义的属性 'Swiper'

html - 在 html5 中寻求 mp4 视频的功能不起作用

html - 当我使用 float 时 DIV 重叠

javascript - 如何在 Angular UI-Grid 中获取列页脚数据?

html - 什么 CSS 选择器根据属性值查找元素,而不考虑属性名称?

javascript - 使同一行上的 div 具有相同的高度 - 动态内容

javascript - 如何以 html 格式显示 pgm/ppm 文件?

javascript - 跟踪第一个按键事件

javascript - 如何仅使用 jQuery 在 div 中包含一系列详细信息而不使用数据属性?

javascript - 如何使用 ES6 HOF Javascript 在数组中查找重复对象(所有键值对应该相同)