Использую два Select. Если вы выберете первый вариант, второй станет активным. Но когда я использую тег div, JavaScript перестает работать.
Это за работой версии JSFiddle
Это версия не работает без тегов DIV JSFiddle
Это версия за работой на StackOverFlow
$(document).ready(function() {
$('select').change(function() {
var $this = $(this).find(':selected');
var rel = $this.data('rel');
$(this).next('select').show()
.find('option').hide()
.end().find('option[data-rel = "' + rel + '"]').show()
.first().prop('selected', true);
$(this).next('select').next('select').hide()
});
});.cate {
display: none;
}
.cate2 {
display: none;
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class = "col-md-6">
<select name = "bcNewAd_mainCat" class = "chosen-select-no-single">
<option value = "0" data-rel = "">Choose</option>
<option value = "1" data-rel = "accessories">Cellphones</option>
<option value = "2" data-rel = "sports">Sports</option>
<option value = "2" data-rel = "cars">Cars</option>
</select>
<select name = "bcNewAd_subCat" class = "chosen-select-no-single cate">
<option value = "0" data-rel = "">Choose</option>
<option value = "3" data-rel = "accessories">Smartphone</option>
<option value = "8" data-rel = "accessories">Charger</option>
<option value = "1" data-rel = "sports">Basketball</option>
<option value = "4" data-rel = "cars">Tesla</option>
</select>
</div>Что могло быть причиной этого?
@ לבנימלכה Работаю, спасибо. Если вы пишете ответы, я приму ваш ответ.
Рад был помочь!!!!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это потому, что .next () выбирает следующий SIBLING, когда вы добавляете div, вы разделяете детей.
Спасибо, тоже приятная аналогия :)
Вы используете $(this).next('select').show(), это выбирает следующий родственный элемент select из DOM и отображает его, которого сейчас не существует, поскольку выбор теперь находится в div.
Используйте селектор id, чтобы привязать события к определенному выбору, если вы хотите сохранить div.
$(document).ready(function() {
$('#firstSelect').change(function() {
var $this = $(this).find(':selected');
var rel = $this.data('rel');
$("#secondSelect").show()
.find('option').hide()
.end().find('option[data-rel = "' + rel + '"]').show()
.first().prop('selected', true);
//$(this).next('select').next('select').hide()
});
});.cate {
display: none;
}
.cate2 {
display: none;
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class = "col-md-6">
<select id = "firstSelect" name = "bcNewAd_mainCat" class = "chosen-select-no-single">
<option value = "0" data-rel = "">Choose</option>
<option value = "1" data-rel = "accessories">Cellphones</option>
<option value = "2" data-rel = "sports">Sports</option>
<option value = "2" data-rel = "cars">Cars</option>
</select> </div>
<div class = "col-md-6">
<select id = "secondSelect" name = "bcNewAd_subCat" class = "chosen-select-no-single cate">
<option value = "0" data-rel = "">Choose</option>
<option value = "3" data-rel = "accessories">Smartphone</option>
<option value = "8" data-rel = "accessories">Charger</option>
<option value = "1" data-rel = "sports">Basketball</option>
<option value = "4" data-rel = "cars">Tesla</option>
</select></div>.next()
Description: Get the immediately following sibling of each element in the set of matched elements. If a selector is provided, it retrieves the next sibling only if it matches that selector.
когда вы добавляете div, они больше не братья и сестры
ТАК попробуйте это:
$('.cate').show()
$(document).ready(function() {
$('select').change(function() {
var $this = $(this).find(':selected');
var rel = $this.data('rel');
$('.cate').show()
.find('option').hide()
.end().find('option[data-rel = "' + rel + '"]').show()
.first().prop('selected', true);
$(this).next('select').next('select').hide()
});
});.cate {
display: none;
}
.cate2 {
display: none;
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class = "col-md-6">
<select name = "bcNewAd_mainCat" class = "chosen-select-no-single">
<option value = "0" data-rel = "">Choose</option>
<option value = "1" data-rel = "accessories">Cellphones</option>
<option value = "2" data-rel = "sports">Sports</option>
<option value = "2" data-rel = "cars">Cars</option>
</select> </div>
<div class = "col-md-6">
<select name = "bcNewAd_subCat" class = "chosen-select-no-single cate">
<option value = "0" data-rel = "">Choose</option>
<option value = "3" data-rel = "accessories">Smartphone</option>
<option value = "8" data-rel = "accessories">Charger</option>
<option value = "1" data-rel = "sports">Basketball</option>
<option value = "4" data-rel = "cars">Tesla</option>
</select></div>
Попробуйте использовать
$('.cate').show()вместо$(this).next('select').show()