Мне просто нужно показать один список ul onclick и скрыть все остальные, которые не были нажаты, если они были открыты. Не могу понять это. См. Демонстрацию ниже. У меня это работает иначе. Просто не могу понять эту часть.onclick показать элемент и скрыть другой элемент
https://jsfiddle.net/z7sv50gq/16/
.nav ul {display:none;}
.nav ul.show{display:block;}
<ul class="nav">
<li><a class="has-dropdown" href="">Main Link</a>
<ul>
<li><a href="">Dropdown-Link</a></li>
<li><a href="">Dropdown-Link</a></li>
<li><a href="">Dropdown-Link</a></li>
</ul>
</li>
<li><a class="has-dropdown" href="">Main Link</a>
<ul>
<li><a href="">Dropdown-Link</a></li>
<li><a href="">Dropdown-Link</a></li>
<li><a href="">Dropdown-Link</a></li>
</ul>
</li>
</ul>
var findDropdowns = document.querySelectorAll(".has-dropdown");
var newdropdownMenu;
function dropdownMenu(anchor) {
this.anchor = anchor;
}
for(var i = 0; i < findDropdowns.length; i++) {
if(i == 0) {
var dropdownId = "has-dropdown-1";
findDropdowns[i].setAttribute("id", dropdownId);
}else {
var addOneToIndex = i + 1;
dropdownId = "has-dropdown-" + addOneToIndex;
findDropdowns[i].setAttribute("id", dropdownId);
}
newdropdownMenu = new dropdownMenu(dropdownId);
var targetDropdown = document.getElementById(newdropdownMenu.anchor);
$(targetDropdown).click(function (e) {
e.preventDefault();
$(this).siblings(".nav ul").addClass("show");
});
}
, вероятно, должно быть просто 'братьями и сестрами ("уль")' – epascarello
Проверить мой ответ. Я думаю, что это работает, как вы исключены: https://jsfiddle.net/z7sv50gq/17/ –