2015-09-16 157 views
3

我有一個自定義的右鍵單擊上下文菜單,當頁面被右鍵單擊時顯示。在右鍵單擊事件之後,如果用戶單擊該頁面,則隱藏上下文菜單。我需要解決的問題是,如果用戶點擊上下文菜單(選擇下拉菜單),那麼上下文菜單被jQuery onClick事件隱藏。有什麼方法可以識別被點擊的元素的div,然後我可以決定是否要從那裏隱藏菜單?jQuery onClick自定義上下文菜單

$('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

你可以做一個小提琴,讓我們看到代碼的行動嗎? – Psyco430404

回答

2

有一些方法來做到這一點,但我知道最好的是加入某個菜單時盤旋一個標誌,將其取出,當鼠標離開菜單:

$('#graphMenu') 
    .mouseenter(function(e) { 
    $(this).data('hovered', true); 
    }) 
    .mouseleave(function(e) { 
    $(this).data('hovered', false); 
    }); 

$('body').on('contextmenu', options.contextMenu.graphName, function (event) { 
    showContextMenu(event); 
}); 

$(document).bind('click', function (event) { 
    if (!$('#graphMenu').data('hovered')) 
    $('#graphMenu').hide(); 
}); 
+0

這個效果很好。感謝您的幫助! – TheyCallMeSam

+0

@TheyCallMeSam所以,請點擊箭頭來上傳我的答案,然後點擊V接受它:) – Buzinas

0

嘗試:

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

這是行不通的。我得到的ID是空白的。 – TheyCallMeSam