Я создал раскрывающийся список с множественным выбором, в котором пользователь выбирает параметры, устанавливая флажок для каждого параметра. Он работает хорошо только для одного такого раскрывающегося списка, но мне нужно иметь много, много из них на одной странице. Кто-нибудь знает, как изменить код для достижения этой цели?
Вот кодовая ручка для этого https://codepen.io/chaser7016/pen/yLNGWYb. Ниже я также добавил html / css / jquery, который можно увидеть в коде ручки.
$('.dropdown-container')
.on('click', '.dropdown-button', function() {
$(this).siblings('.dropdown-list').toggle();
})
.on('input', '.dropdown-search', function() {
var target = $(this);
var dropdownList = target.closest('.dropdown-list');
var search = target.val().toLowerCase();
if (!search) {
dropdownList.find('li').show();
return false;
}
dropdownList.find('li').each(function() {
var text = $(this).text().toLowerCase();
var match = text.indexOf(search) > -1;
$(this).toggle(match);
});
})
$('.dropdown-list input[type="checkbox"]').on('click', function () {
var title = $(this).closest('.dropdown-list').find('input[type="checkbox"]').val(),
title = $(this).val() + ",";
if ($(this).is(':checked')) {
var html = '<span title="' + title + '">' + title + '</span>';
$('.quantity').append(html);
$(".hida").hide();
}
else {
$('span[title="' + title + '"]').remove();
var ret = $(".hida");
$('.dropdown dt a').append(ret);
}
});
.dropdown-button {
width: 100%;
background: white;
cursor: pointer;
padding: 19px;
box-sizing: border-box;
border: 1px solid;
}
.dropdown-label, .dropdown-quantity {
float: left;
font-family: 'Ubuntu', sans-serif;
}
.dropdown-quantity {
margin-left: 4px;
}
input[type="search"] {
padding: 5px;
width: 100%;
margin: 3px 0 8px;
}
.dropdown-list {
margin: 0;
overflow-y: auto;
border-bottom: 1px solid #d5d5d5;
border-left: 1px solid #d5d5d5;
border-right: 1px solid #d5d5d5;
border-top: 1px solid #d5d5d5;
z-index: 9999999;
position: absolute;
padding: 10px;
background: white;
top: 67px;
width: 97.5%;
left: 9px;
}
.dropdown-container ul {
margin: 0;
padding: 0;
}
.dropdown-container ul li { list-style-type: none; }
input[type="checkbox"] {
position: relative;
top: 2px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<div>
<label>States<span>*</span></label>
<div class="dropdown-container">
<div class="dropdown-button noselect form-control">
<div class="dropdown-label"></div>
<div class="dropdown-quantity"><span class="quantity"></span></div>
<span class="down-arrow">▼</span>
</div>
<div class="dropdown-list" style="display: none;">
<input type="search" placeholder="Search states" class="dropdown-search">
<ul id="pac">
<li style="display: list-item;"><input value="Alabama " name="AL" type="checkbox"><label for="AL">Alabama</label></li>
<li style="display: list-item;"><input value="Alaska" type="checkbox"><label for="AK">Alaska</label></li>
<li style="display: none;"><input value="American Samoa" type="checkbox"><label for="AS">American Samoa</label></li>
<li style="display: none;"><input value="AZ" type="checkbox"><label for="AZ">Arizona</label></li>
<li style="display: none;"><input value="AR" type="checkbox"><label for="AR">Arkansas</label></li>
<li style="display: list-item;"><input value="CA" type="checkbox"><label for="CA">California</label></li>
<li style="display: none;"><input value="CO" type="checkbox"><label for="CO">Colorado</label></li>
<li style="display: none;"><input value="CT" type="checkbox"><label for="CT">Connecticut</label></li>
</ul>
</div>
</div>
</div>