JQuery: исполнительная функция при нажатии в любом месте за пределами div

0
    function handler1(){
        $("#navi_touch").css("visibility","visible");
        $("#navitouchbutton").css("background","red");
        $("#navitouchbutton").one("click",handler2);
        }
    function handler2(){
        $("#navi_touch").css("visibility","hidden");
        $("#navitouchbutton").css("background","#000");
        $("#navitouchbutton").one("click",handler1);
        }
    $("#navitouchbutton").one("click", handler1);

Сейчас единственный способ свернуть меню - нажать кнопку #navitouchbutton. Как я могу свернуть это меню (скрывая #navi_touch), когда пользователь щелкает где-нибудь вне #navi_touch?

Теги:

2 ответа

0
Лучший ответ

Один из способов сделать это - привязать событие клика к документу, а затем проверить, является ли элемент, на который вы нажали, дочерний элемент #nav_touch.

Образец обработчика:

$(document).on('click', function(e){
    if( $(e.target).parents('#navi_touch').length ) return;

    $("#navi_touch").css("visibility", "hidden");
    $("#navitouchbutton").css("background", "#000");
});
0

Зарегистрировать обработчик объекта документа

function handler1() {
    $("#navi_touch").css("visibility", "visible");
    $("#navitouchbutton").css("background", "red");
    $(document).one("click", handler2);
}

function handler2() {
    $("#navi_touch").css("visibility", "hidden");
    $("#navitouchbutton").css("background", "#000");
    $("#navitouchbutton").one("click", handler1);
}
$("#navitouchbutton").one("click", handler1);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню