DevExtreme v24.1 is now available.

Explore our newest features/capabilities and share your thoughts with us.

Your search did not match any results.

Templates

The ContextMenu component provides full control over the appearance and behavior of menu items across all nesting levels.

Backend API
$(() => { $('#context-menu').dxContextMenu({ dataSource: contextMenuItems, width: 200, target: '#image', itemTemplate(itemData) { const template = $('<div class="item-template-container"></div>'); if (itemData.icon) { template.append(`<span class="${itemData.icon} dx-icon "></span>`); } template.append(`<span class="dx-menu-item-text">${itemData.text}</span>`); if (itemData.items) { template.append('<span class="dx-icon-spinright dx-icon"></span>'); } return template; }, onItemClick(e) { if (!e.itemData.items) { DevExpress.ui.notify(`The "${e.itemData.text}" item was clicked`, 'success', 1500); } }, }); });
<!DOCTYPE html> <html> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script>window.jQuery || document.write(decodeURIComponent('%3Cscript src="js/jquery.min.js"%3E%3C/script%3E'))</script> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/24.1.3/css/dx.light.css" /> <script src="js/dx.all.js"></script> <script src="data.js"></script> <link rel="stylesheet" type="text/css" href="styles.css" /> <script src="index.js"></script> </head> <body class="dx-viewport"> <div class="demo-container"> <div class="label"> Right click an image to display the context menu: </div> <img id="image" alt="product" src="images/products/5.png" /> <div id="context-menu"></div> </div> </body> </html>
.item-template-container { display: flex; align-items: center; gap: 6px; width: 100%; } .dx-menu-item-text { flex-grow: 1; } #image { height: 300px; } .label { color: #767676; }
const contextMenuItems = [ { text: 'Share', icon: 'dx-icon-globe', items: [ { text: 'Facebook' }, { text: 'Twitter' }], }, { text: 'Download', icon: 'dx-icon-download' }, { text: 'Add Comment', icon: 'dx-icon-add' }, { text: 'Add to Favorite', icon: 'dx-icon-favorites' }, ];