提问者:小点点

向javascript添加输入


我正面临这样的错误。 当我点击add-contact时,add-contact会正常添加输入,但当我点击Add-Phone时,它就不工作了。 我只想添加哪个用户想要哪个输入,但它没有以任何方式添加。

我在使用jquery时遇到了一些问题,但没有什么可做的:)我该如何跟踪或纠正它呢?

<div id="menus">
<ul id="menu" class="menu">
<li>
<div class="handle"></div>
<div class="menu-item">
<a href="#" class="delete-menu">
<i class="fa fa-times"></i>
</a>
<div class="row">
<label class="col-sm-2 col-form-label">Kullanıcı Adı</label>
<div class="col-sm-7">
<div class="form-group bmd-form-group">
<input class="form-control" type="text" name="title[]" placeholder="Menü Adı">
</div>
 </div>
</div>                                    
</div>
<div class="sub-menu">
<ul class="menu"></ul>
<ul class="menu2"></ul>
</div>
<a href="#" class="btn add-contact" data-background-color="warning">Add Contant</a>
<a href="#" class="btn add-phone" data-background-color="warning">Add Phone</a>
</li>
</ul>
</div>
$(function () {
$('.add-contact').on('click', function (e) {
                var index = $(this).closest('li').index();
                $(this).prev('.sub-menu').find('.menu').append('<li>\n' +
                    '                                <div class="handle"></div><div class="menu-item">\n' +
                    '                                    <a href="#" class="delete-menu">\n' +
                    '                                        <i class="fa fa-times"></i>\n' +
                    '                                    </a>\n' +
                    '                        <div class="row">\n' +
                    '                        <label class="col-sm-2 col-form-label">Kullanıcı Adı</label>\n' +
                    '                        <div class="col-sm-7">\n' +
                    '                         <div class="form-group bmd-form-group">\n' +
                    '                                    <input class="form-control" type="text" name="sub_contact_' + index + '[]" placeholder="Menü Adı">\n' +
                    '                                </div>\n' +
                    '                                </div>\n' +
                    '                                </div>\n' +
                    '                                </div>\n' +
                    '                            </li>');
                e.preventDefault();
            });

            $('.add-phone').on('click', function (e) {
                var index = $(this).closest('li').index();
                $(this).prev('.sub-menu').find('.menu').append('<li>\n' +
                    '                                <div class="handle"></div><div class="menu-item">\n' +
                    '                                    <a href="#" class="delete-menu">\n' +
                    '                                        <i class="fa fa-times"></i>\n' +
                    '                                    </a>\n' +
                    '                        <div class="row">\n' +
                    '                        <label class="col-sm-2 col-form-label">Kullanıcı Adı</label>\n' +
                    '                        <div class="col-sm-7">\n' +
                    '                         <div class="form-group bmd-form-group">\n' +
                    '                                    <input class="form-control" type="text" name="sub_contact_' + index + '[]" placeholder="Menü Adı">\n' +
                    '                                </div>\n' +
                    '                                </div>\n' +
                    '                                </div>\n' +
                    '                                </div>\n' +
                    '                            </li>');
                e.preventDefault();
            });
});

共1个答案

匿名用户

问题是您的$(this).prev('.sub-menu'),因为.prev()只选择当前元素之前的元素,而不是所有元素,所以请使用$(this).prevall('.sub-menu:last')

也可以使用$(this).closest('li').find('.sub-menu')

null

$(function() {
  $('.add-contact').on('click', function(e) {
    var index = $(this).closest('li').index();
    $(this).prev('.sub-menu').find('.menu').append('<li>\n' +
      '                                <div class="handle"></div><div class="menu-item">\n' +
      '                                    <a href="#" class="delete-menu">\n' +
      '                                        <i class="fa fa-times"></i>\n' +
      '                                    </a>\n' +
      '                        <div class="row">\n' +
      '                        <label class="col-sm-2 col-form-label">Kullanıcı Adı</label>\n' +
      '                        <div class="col-sm-7">\n' +
      '                         <div class="form-group bmd-form-group">\n' +
      '                                    <input class="form-control" type="text" name="sub_contact_' + index + '[]" placeholder="Menü Adı">\n' +
      '                                </div>\n' +
      '                                </div>\n' +
      '                                </div>\n' +
      '                                </div>\n' +
      '                            </li>');
    e.preventDefault();
  });

  $('.add-phone').on('click', function(e) {
    var index = $(this).closest('li').index();
    $(this).prevAll('.sub-menu:last').find('.menu').append('<li>\n' +
      '                                <div class="handle"></div><div class="menu-item">\n' +
      '                                    <a href="#" class="delete-menu">\n' +
      '                                        <i class="fa fa-times"></i>\n' +
      '                                    </a>\n' +
      '                        <div class="row">\n' +
      '                        <label class="col-sm-2 col-form-label">Kullanıcı Adı</label>\n' +
      '                        <div class="col-sm-7">\n' +
      '                         <div class="form-group bmd-form-group">\n' +
      '                                    <input class="form-control" type="text" name="sub_contact_' + index + '[]" placeholder="Menü Adı">\n' +
      '                                </div>\n' +
      '                                </div>\n' +
      '                                </div>\n' +
      '                                </div>\n' +
      '                            </li>');
    e.preventDefault();
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="menus">
  <ul id="menu" class="menu">
    <li>
      <div class="handle"></div>
      <div class="menu-item">
        <a href="#" class="delete-menu">
          <i class="fa fa-times"></i>
        </a>
        <div class="row">
          <label class="col-sm-2 col-form-label">Kullanıcı Adı</label>
          <div class="col-sm-7">
            <div class="form-group bmd-form-group">
              <input class="form-control" type="text" name="title[]" placeholder="Menü Adı">
            </div>
          </div>
        </div>
      </div>
      <div class="sub-menu">
        <ul class="menu"></ul>
        <ul class="menu2"></ul>
      </div>
      <a href="#" class="btn add-contact" data-background-color="warning">Add Contant</a>
      <a href="#" class="btn add-phone" data-background-color="warning">Add Phone</a>
    </li>
  </ul>
</div>