jQuery onClick自定义上下文菜单

时间:2015-09-16 20:23:18

标签: javascript jquery html

我有一个自定义右键单击上下文菜单,在右键单击页面时会显示该菜单。在右键单击事件后,如果用户单击该页面,则隐藏上下文菜单。我需要解决的问题是,如果用户单击上下文菜单(选择下拉列表),则jQuery onClick事件将隐藏上下文菜单。有没有办法识别被点击的元素的div,以便我可以决定是否从那里隐藏菜单?

    $('body').on('contextmenu', options.contextMenu.graphName, function (event) {
        showContextMenu(event);
    });
    $(document).bind('click', function (event) {
        //if(event.targetDiv.id != '#graphMenu') <- Is something like this possible?
               $('#graphMenu').hide();
    });

2 个答案:

答案 0 :(得分:2)

有一些方法可以实现这一点,但我所知道的最好的方法是在菜单悬停时添加一个标记,并在鼠标离开菜单时将其删除:

std::string s = "your\n\nstring\nhere\n";
size_t n = -1, len = s.length();
    while ((n = s.find('\n', n+1)) != std::string::npos)
        if ((n == 0 && s[n+1] != '\n') || (n == len && s[n-1] != '\n') ||
            (n != 0 && n != len && s[n-1] != '\n' && s[n+1] != '\n'))
            s[n] = ' ';

答案 1 :(得分:0)

尝试:

$('body').on('contextmenu', options.contextMenu.graphName, function (event) {
    showContextMenu(event);
});
$(document).bind('click', function (event) {
    if(event.target.id != '#graphMenu') {
           $('#graphMenu').hide();
    }
});