У меня есть родительский элемент с дочерним элементом, который отображается/скрывается при нажатии определенной кнопки на странице. Кнопка просто меняет стиль с display:none на display:block, довольно просто. Дочерний элемент начинается как display:none;
Я хочу скрыть этот элемент при щелчке родительского элемента, но не при щелчке дочернего элемента, что проблематично, поскольку дочерний элемент находится отдельно от родительского элемента.
Я видел, что существует функция data();, которая может проверять, был ли нажат элемент, но, похоже, она не работает.
Вот html:
<style>
#parent {width:200px;height:200px;}
#child {display:none;width:50px;height:50px;}
#child.display {display:block;}
</style>
<div id="parent">
Some content
<div id="child">Some other content</div>
</div>
<button id="clickMe">Toggle Child</button>
А вот и jQuery:
$(function()
{
$('#clickMe').click(function()
{
$('#child').toggleClass('display');
});
$('#parent').click(function()
{
if($('#child').data('clicked') == true )
{
// do nothing
} else
{
$('#child').toggleClass('display');
}
});
});
Ради этого примера я скрыл дочерний элемент по умолчанию. Не волнуйтесь, я не буду делать это в продакшене. Я просто работаю над выяснением того, как сделать эту базовую функциональность.
Вот ссылка на демонстрацию: jsfiddle