右键菜单(ContextMenu)是一个轻量级的jquery插件,使用它你可以选择性的用自定义的右键菜单替换浏览器的右键菜单。
Open
Email
Save
Delete| 版本号 | r2 |
|---|---|
| 发布日期 | 2007-7-16 |
| 作者 | Chris Domigan (cdomigan@gmail.com) |
| 贡献者 | Dan G. Switzer, II |
| 类库需求 | jQueryV1.1或更高 |
| 支持浏览器 | Firefox 1.5+ Internet Explorer 6.0+ |
$(elements).contextMenu(String menu_id [, Object settings]);
在HTML标签中定义菜单结构.对于每个菜单,在使用样式"contextMenu"的div标签中放置一些无序列表和你要调用的ID(参见例子).
div标签可以放置在任意位置,它会被插件隐藏起来.
你可以在页面上定义任意多的菜单. 每个<li>标签会作为一个菜单选项.
为每个<li>标签分配一个唯一id,这样就可以为其绑定操作.
注意:菜单(ContextMenu)目前不支持嵌套菜单. 这个特性也许在以后的版本出现.
菜单id是在菜单中定义的.可以将菜单绑定到一个或多个元素上.
例:$("table td").contextMenu("myMenu") 会将菜单绑定到id为"myMenu"的表格单元格中
注意: 版本1中,id前需要加上一个"#"
菜单插件(ContextMenu)接收一个额外的参数对象来设置菜单项的样式和绑定鼠标事件. 菜单插件(ContextMenu)支持一下参数设置:
除了通过参数对象来设置菜单样式外,你还可以通过调用$.contextMenu.defaults(settings)
来扩展默认参数.除bindings外每个设置都会用作默认参数.
例:
$.contextMenu.defaults({
menuStyle : {
border : "2px solid green"
},
shadow: false,
onContextMenu: function(e) {
alert('Did someone asked for a context menu?!');
}
});
RIGHT CLICK FOR DEMO THIS WORKS TOO
<div class="contextMenu" id="myMenu1">
<ul>
<li id="open"><img src="folder.png" /> Open</li>
<li id="email"><img src="email.png" /> Email</li>
<li id="save"><img src="disk.png" /> Save</li>
<li id="close"><img src="cross.png" /> Close</li>
</ul>
</div>
$('span.demo1').contextMenu('myMenu1', {
bindings: {
'open': function(t) {
alert('Trigger was '+t.id+'\nAction was Open');
},
'email': function(t) {
alert('Trigger was '+t.id+'\nAction was Email');
},
'save': function(t) {
alert('Trigger was '+t.id+'\nAction was Save');
},
'delete': function(t) {
alert('Trigger was '+t.id+'\nAction was Delete');
}
}
});
上述代码将菜单"myMenu1"绑定到样式为"demo1"的所有span元素上
Right clicking anywhere in this paragraph will trigger the context menu.
<div class="contextMenu" id="myMenu2">
<ul>
<li id="item_1">Item 1</li>
<li id="item_2">Item 2</li>
<li id="item_3">Item 3</li>
<li id="item_4">Item 4</li>
<!-- etc... -->
</ul>
</div>
$('#demo2').contextMenu('myMenu2', {
menuStyle: {
border: '2px solid #000'
},
itemStyle: {
fontFamily : 'verdana',
backgroundColor : '#666',
color: 'white',
border: 'none',
padding: '1px'
},
itemHoverStyle: {
color: '#fff',
backgroundColor: '#0f0',
border: 'none'
}
});
上述代码将菜单"myMenu2"绑定到id为"demo2"的元素上.
Don't show menu Just first item Show all
<div class="contextMenu" id="myMenu3">
<ul>
<li id="item_1">Item 1</li>
<li id="item_2">Item 2</li>
<li id="item_3">Item 3</li>
</ul>
</div>
$('span.demo3').contextMenu('myMenu3', {
onContextMenu: function(e) {
if ($(e.target).attr('id') == 'dontShow') return false;
else return true;
},
onShowMenu: function(e, menu) {
if ($(e.target).attr('id') == 'showOne') {
$('#item_2, #item_3', menu).remove();
}
return menu;
}
});