I have several DOM elements with context menus. When one element is a child of another, and I call the context menu of the inner child, I also see the context menu from the parent. This is implemented using the jquery-ui.contextmenu plugin .
Is there a way to configure the plugin to prevent the parent menu from appearing, or will I have to process all click events manually and filter them, so I only show the menu that I want?
Below is my code:
HTML:
<div class="outer-child" id="outer-child"> Outer Child <div class="inner-child" id="inner-child"> Inner Child </div> </div> </div>
CSS
.outer-child { position: absolute; top: 0px; left: 0px; width: 200px; height: 200px; border: 1px solid red; background: green; } .inner-child { position: absolute; top: 50px; left: 50px; width: 100px; height: 100px; border: 1px solid blue; background: yellow; }
JavaScript:
// create context menu on outer child $("#outer-child").contextmenu({ menu: [ {title: "This is the Outer Menu", cmd: "outer-menu"} ], select: function(event, ui) { alert("select " + ui.cmd + " on " + ui.target.text()); } }); // create context menu on inner child $('#inner-child').contextmenu({ menu: [ {title: "Inner Menu", cmd: "inner-menu"} ], select: function(event, ui) { alert("select " + ui.cmd + " on " + ui.target.text()); } });
Here you can find jsfiddle demo here . (Right-click the internal field and select both context menus)
nigel source share