Я хочу щелкнуть конкретный div и отобразить div, содержащий дочерние элементы, а затем, щелкнув за пределами этого div и его дочерних элементов, будет установлен div и его дочерние элементы снова отобразить: none. Следующий код не работает при нажатии дочерних элементов отображаемого div и, следовательно, приводит к скрытию родительского div. Как включить все дочерние div в event.target.id == 'menu-container' в следующем коде?Как таргетировать div id, включая все дочерние элементы в JQuery
<body>
<div id = "screen">
<div id = "menu-container">
<li class = "menu-options">
<ul>option-1</ul>
<ul>option-2</ul>
<ul>option-3</ul>
</li>
</div>
<div id = "bottom-panel">
<div id = "menu-button">
CLICK HERE FOR MENU
</div>
</div>
</div>
<body>
JQuery
$(document).ready(function() {
$('body').click(function(event){
if (event.target.id == 'menu-button'){
$("#menu-container").show();
}else if(event.target.id == 'menu-container'){
return true;
}else{
$('#menu-container').hide();
}
});
});
Ваше решение работает только для дочерних элементов div div = «menu-options», а не для всех дочерних элементов div id = «menu-container». Вы можете увидеть это, щелкнув над верхней улицей и под границей # menu-container. Добавление .menu-options для дочерних элементов - это решение, но это не самое эффективное решение. – Emanegux
@Emanegux См. Обновленный код и скрипку: http://jsfiddle.net/onury/ecABg/4/ –
это работает для любого уровня дочерних элементов в контейнере div # меню и позволяет мне пропускать class = "menu-options ». Это наиболее эффективное решение, на которое я мог бы надеяться. – Emanegux