Yahoo! Developer Network Home - Help

YDN Site Search

# YUI Library Examples: Menu Family: Setting Menu Configuration Properties At Runtime

# Menu Family: Setting Menu Configuration Properties At Runtime

This example demonstrates how to set MenuItem configuration properties at runtime and listen for the changes through the "configChanged" event.

Note: By default clicking outside of a menu will hide it. Additionally, menu items without a submenu or a URL to navigate to will hide their parent menu when clicked. Click the "Show Menu" button below to make the menu visible if it is hidden.

View example in new window.

## Setting MenuItem configuration properties at runtime

A MenuItem has a number of configuration properties that affect its behavior and visual rendering. Any of these configuration properties can be set at runtime via the `setProperty` method of the item's configuration object (accessible via its `cfg` property.

This example ulitizes the following configuration properties: text, selected, disabled, helptext, url, emphasis, strongemphasis, and checked.

/* "configChange" event handler for each MenuItem instance - used to log info about the configuration property that was changed. */ function onMenuItemConfigChange(p_sType, p_aArgs) { var sPropertyName = p_aArgs[0][0], sPropertyValue = p_aArgs[0][1]; YAHOO.log(("Index: " + this.index + ", " + "Group Index: " + this.groupIndex + ", " + "Custom Event Type: " + p_sType + ", " + "\"" + sPropertyName + "\" Property Set To: \"" + sPropertyValue + "\""), "info", "example12"); } /* Instantiate a Menu: The first argument passed to the constructor is the id of the element in the page representing the Menu; the second is an object literal of configuration properties. */ var oMenu = new YAHOO.widget.Menu("basicmenu", { fixedcenter: true }); /* Subscribe to the Menu instance's "itemAdded" event in order to subscribe to the "configChange" event handler of each MenuItem instance's configuration object. */ oMenu.subscribe("itemAdded", function (p_sType, p_aArgs) { var oMenuItem = p_aArgs[0]; /* Subscribe to the "configChange" event handler of each MenuItem instance's configuration object. */ oMenuItem.cfg.subscribe("configChanged", onMenuItemConfigChange); }); /* Add items to the Menu instance by passing an array of strings (each of which represents the "text" configuration property of a YAHOO.widget.MenuItem instance) to the "addItems" method. */ oMenu.addItems([ "Selected MenuItem", "Disabled MenuItem", "MenuItem With A URL", "Checked MenuItem" ]); /* Since this Menu instance is built completely from script, call the "render" method passing in the DOM element that it should be appended to. */ oMenu.render("rendertarget"); /* Set a configuration property of each MenuItem to trigger the firing of its configuration object's "configChanged" event. */ oMenu.getItem(0).cfg.setProperty("selected", true); oMenu.getItem(1).cfg.setProperty("disabled", true); oMenu.getItem(2).cfg.setProperty("url", "http://www.yahoo.com"); oMenu.getItem(3).cfg.setProperty("checked", true);

### YUI Logger Output:

### Menu Family Examples:

- Basic Menu From Markup
- Basic Menu From JavaScript
- Grouped Menu Items Using Markup
- Grouped Menu Items Using JavaScript
- Grouped Menu Items With Titles From Markup
- Grouped Menu Items With Titles From JavaScript
- Multi-tiered Menu From Markup
- Multi-tiered Menu From JavaScript
- Handling Menu Click Events
- Listening For Menu Events
- MenuItem Configuration Properties
- Setting Menu Configuration Properties At Runtime
- Website Left Nav With Submenus Built From Markup
- Website Left Nav With Submenus From JavaScript
- Website Top Nav With Submenus Built From Markup
- Website Top Nav With Submenus From JavaScript
- Website Left Nav Using Animation With Submenus Built From Markup
- Website Left Nav Using Animation With Submenus From JavaScript
- Website Top Nav Using Animation With Submenus Built From Markup
- Website Top Nav Using Animation With Submenus From JavaScript
- Context Menu
- Adding A Context Menu To A Table
- Adding A Context Menu To A TreeView
- OS-Style Programs Menu
- Application Menubar
- Implementing ARIA Roles and States with Menu
- Context Menu Integration (included with examples for DataTable Control (beta))
- Menu Buttons (included with examples for Button Control)
- Split Buttons (included with examples for Button Control)
- Color Picker Button (included with examples for Button Control)
- Fixed Width Menu Button (included with examples for Button Control)
- Slider Button (included with examples for Button Control)
- Using the ProfilerViewer API while Profiling the YUI Menu Control (included with examples for ProfilerViewer Control (beta))

### More Menu Family Resources:

- User's Guide (external)
- API Documentation
- Cheat Sheet PDF (external)

Copyright © 2008 Yahoo! Inc. All rights reserved.

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