Есть элемент крестик
<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() элемент нормально появляется на экране.