我有一个自定义右键单击上下文菜单,在右键单击页面时会显示该菜单。在右键单击事件后,如果用户单击该页面,则隐藏上下文菜单。我需要解决的问题是,如果用户单击上下文菜单(选择下拉列表),则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();
});
答案 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();
}
});