我正面临这样的错误。 当我点击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();
});
});
问题是您的$(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>