Как закрыть контекстное меню jquery

0

Я показываю контекстное меню в jquery, но не могу его закрыть.

Это те события, которые я регистрирую:

function openContextMenu(event) {
    event.preventDefault();
    $("#custom-menu")
        .css({
        top: event.pageY + "px",
        left: event.pageX + "px"
    })
        .show(100);
    isContextMenuOpen = true;
}

function closeContextMenu(event) {
    console.log("Click called on document");
    if (isContextMenuOpen) {
        $("custom-menu").hide();
        console.log("Hide the context menu");
    }

    isContextMenuOpen = false;
}

function registerMenu() {

    $(document).on({
        contextmenu: function (event) {
            openContextMenu(event);
        },
        click: function (event) {
            closeContextMenu(event);
        }
    });
}
Теги:
javascript-events
contextmenu

1 ответ

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

Я считаю, что у вас просто опечатка:

$("custom-menu") в closeContextMenu должно иметь идентификатор ID:

$("#custom-menu").hide();

Кроме того, если isContextMenuOpen объявлен глобально, он останется openContextMenu в openContextMenu, поэтому метод hide никогда не будет выполняться. Вы все равно не нуждаетесь в этом, так как hide будет работать, будет ли элемент виден или нет.

Попробуйте это вместо этого:

function closeContextMenu(event) {
    $("#custom-menu").hide();
    console.log("Hide the context menu");
}

Кроме того, просто для того, чтобы подключить мой собственный ответ, для некоторой довольно сложной обработки контекстного меню, посмотрите на это:

Используйте раскрывающееся меню Bootstrap 3 в качестве контекстного меню

  • 0
    Вы здесь, я должен вместо этого использовать идентификатор идентификатора.

Ещё вопросы

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