#jquery #bootstrap-4 #jquery-selectors
#jquery ( jquery ) #bootstrap-4 #jquery-селекторы
Вопрос:
Рассмотрите возможность следующего выбора начальной загрузки:
<select id="parent" class="selectpicker">
<option value="1">Parent 1</option>
<option value="2">Parent 2</option>
</select>
<select id="child" class="selectpicker">
<option value="1">Child - Parent 1</option>
<option value="2">Child - Parent 2</option>
</select>
$("#parent").on('change', function (e) {
var parentId = $(this).val();
$("#child option").each((i,a) => {
var childParentId = $(a).value();
if(childParentId != parentId) {
$(a).hide();
} else { $(a).show() }
});
$("#child").selectpicker("refresh")
});
Независимо от того, что я делаю, $(a).show() не имеет никакого эффекта.
Чего мне не хватает ?
Ответ №1:
Вам нужно использовать $(this)
, чтобы получить dom, но не $(a)
Обновление: jsfiddle
$("#parent").on('change', function (e) {
var parentId = $(this).val();
$("#child option").each(function() {
var childParentId = $(this).val();
if(childParentId != parentId) {
$(this).hide();
} else { $(this).show() }
});
// $("#child").selectpicker("refresh")
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="parent" class="selectpicker">
<option value="1">Parent 1</option>
<option value="2">Parent 2</option>
</select>
<select id="child" class="selectpicker">
<option value="1">Child - Parent 1</option>
<option value="2">Child - Parent 2</option>
</select>
Комментарии:
1. С классом selectpicker результат другой, параметры в дочернем выборе не отображаются.
2. @Debunkar Я добавил jsfiddle, он работает прямо сейчас
3. Привет, Алекс. Я определил основную причину проблемы, кажется, что атрибут ‘data-size’ для выбора (не в примере) в основном усугубляет проблему. Чтобы быть более конкретным, когда у меня есть этот атрибут при выборе, всякий раз, когда я пытаюсь скрыть параметры, ВКЛЮЧАЯ первый вариант из select, он скроет все. Если я не скрою первый вариант, он будет работать нормально. Однако, если я удалю атрибут data-size, все будет в порядке. Я не уверен, почему у него такое поведение. Есть идеи?
4. …Я использовал последнюю версию bootstrap select, теперь все в порядке… Спасибо за ваше время, Алекс.
Ответ №2:
Проблема в этой строке
var childParentId = $(a).value();
вы используете value()
правильный синтаксис val()