Есть элемент крестик
<span onClick='closeSign()' class=close><i class='fa fa-times'></i></span>
по клику на который выполняется функция
function closeSign() {
$("#delete_topic_question").css("visibility", "visible");
}
и есть элемент который по умолчанию
visibility:hidden
<div class=text-center id=delete_topic_question>
<span id=delete_topic_question_text>Delete topic?</span>
<div class=text-center id=delete_topic_question_buttons>
<input onClick='deleteTopic()' id=but type=button class="btn btn-danger" value=Delete>
<input onClick='noDelTopic()' id=no_del_btn type=button class="btn btn-primary" value=No>
</div>
</div>
После того как элемент стал видимым мне нужно сделать так чтобы кликнув вне этого элемента он снова становился невидимым, для этого написал следующий код:
$(document).click(function (e)
{
var container = $("#delete_topic_question");
if (!container.is(e.target) //
&& container.has(e.target).length === 0 //
&& container.css("visibility")==="visible"
&& $(e.target)!==$("span.close")) // если нажат крестик
{
container.css("visibility","hidden");
}
});
Проблема: при нажатии на крестик ничего не происходит, скоре всего потому что при клике на него тригерятся сразу обе функции , то есть элемент появляется и исчезает сразу же.
Как при клике по $(document) мне не учитывать нажатие на крестик отображающее элемент?
Если что без $(document).click() элемент нормально появляется на экране.