YUI Library Home

YUI Library Examples: Menu Family: Context Menu

Menu Family: Context Menu

This example demonstrates how to use the ContextMenu widget to create two context menus. There is one for each ewe that is created and one for the green field that the ewes graze in. Use the ewe context menu to rename, clone or delete Dolly. The field's context menu enables the deletion of all the ewes from the field, the addition of a new ewe and the ability to modify the color of the grass.

Please Note: Opera users will need to do the following to use this example:

  • Opera for Windows: Hold down the control key and click with the left mouse button.
  • Opera for OS X: Hold down the command key (⌘) and click with the left mouse button.

Begin by defining an array of text labels, each of which represents an item in the ContextMenu. Next, use the onContentReady method of the Event utility to instantiate the ContextMenu as soon as the elements whose "contextmenu" event trigger its display are ready to be scripted.

This ContextMenu makes use of a couple configuration properties, each of which is set via an object literal passed as the second argument to the constructor. The "trigger" configuration property defines the element(s) whose "contextmenu" event trigger the display of the ContextMenu instance. In this case, each <li> element of the <ul id="clones"> element is a trigger for the ContextMenu. The "lazyload" property is used speed up the initial load time of the ContextMenu instance. By setting the "lazyload" property to "true," the ContextMenu will not be appended to the page until the initial firing of a "contextmenu" event by one of the elements defined as its trigger. Additionally, use of the "lazyload" property defers the initialization and rendering of submenus until just before it is initially made visible. Lastly, the "itemdata" property is set to the array of MenuItem configuration properties; each item in the array will be used to add a new item to the ContextMenu when it is rendered.

When multiple elements are defined as the "trigger" for a ContextMenu instance, the "contextEventTarget" property can be used to determine which element triggered its display. The "contextEventTarget" property returns a reference to the HTML element whose "contextmenu" event triggered the display of the ContextMenu instance. In this example, the "contextEventTarget" property is used inside the scope of a "click" event listener (see "onEweContextMenuClick") to determine which <li> element triggered the display of the "ewe" ContextMenu instance.

In the example above, a single "click" event handler is added to the ContextMenu instance and discrete functionality is executed depending of the index of the MenuItem instance that was the target of the event. An alternative way of listening for the "click" event on MenuItem instances is to use the "onclick" configuration property. The "onclick" configuration property provides an easy way define a "click " event listener for individual items when building menus from script. The "onclick" configuration property accepts an object literal representing the code to be executed when the MenuItem instance is clicked. The format for the object literal is:

The second ContextMenu instance in this example makes use of the "onclick" configuration property:

Configuration for This Example

You can load the necessary JavaScript and CSS for this example from Yahoo's servers. Click here to load the YUI Dependency Configurator with all of this example's dependencies preconfigured.

Menu Family Examples:

More Menu Family Resources:

Copyright © 2009 Yahoo! Inc. All rights reserved.

Privacy Policy - Terms of Service - Copyright Policy - Job Openings