Понимаю, что тема заезжана. Но не смог все ж найти/придумать решения(не костыльного на овер 100500 строк и проверок).
Надо создать, чтоб при нажатие на ссылку открывался див с инфой. Собственно, он у меня открывается/закрывается, по крестику тоже закрывается. Нужно, чтоб по клику в любом месте он тоже закрывался (частично реализованно), вот тут и возникает проблема: при клике в любом месте, кроме него самого, он закрывается. НО, если я кликаю по ссылке, которая его же и вызывает, то ничего не происходит.
Дабы не быть голословным, вот код:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<style>
#disign{
color: black;
text-decoration: none
}
#content{
color: blueviolet; display: none;
border: 1px darkred solid; position:absolute;
margin-left: 300px; margin-top: 0px;
z-index: 1; background-color: white;
width: 300px; height: 400px;
overflow: auto;
}
#closing_crust{
position: absolute;
left: 270px;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
var obj = document.getElementById('content');
obj.style.display = 'none';
$('#disign').click(function(){
obj.style.display == 'none' ? $('#content').show() : $('#content').hide();
});
$('#closing_crust').click(function(){
$('#content').hide();
});
$(document).mouseup(function (e){
var div = $("#content");
if (!div.is(e.target) && div.has(e.target).length === 0) {
div.hide();
}
});
});
</script>
</head>
<body>
<div class="dis">
<div id="content">
<img id="closing_crust" src="http://www.iconsearch.ru/uploads/icons/minimal/64x64/gtk-close.png" width="30" height="30">
</div>
<a id="disign" href="#" style="">Смотреть все дизайны для данного товара</a>
</div>
</body>
</html>
Что конфликт между 30 и 37 строчкой (эти две проверки накладываются и как бы перебивают друг друга) я понимаю. Но не знаю, как обойти это. Пробовал еще в 37 строку условие вставить
if (!div.is(e.target) && div.has(e.target).length === 0 && $('#disign').mouseleave())
, но не помогло.