- (function(menu) {
- jQuery.fn.contextmenu = function(options) {
- var defaults = {
- offsetX : 2, //鼠标在X轴偏移量
- offsetY : 2, //鼠标在Y轴偏移量
- items : [], //菜单项
- action : $.noop() //自由菜单项回到事件
- };
- var opt = menu.extend(true, defaults, options);
- function create(e) {
- var m = menu('<ul class="simple-contextmenu"></ul>').appendTo(document.body);
- menu.each(opt.items, function(i, item) {
- if (item) {
- if(item.type == "split"){
- menu("<div class='m-split'></div>").appendTo(m);
- return;
- }
- var row = menu('<li><a href="javascript:void(0)"><span></span></a></li>').appendTo(m);
- item.icon ? menu('<img src="' + item.icon + '">').insertBefore(row.find('span')) : '';
- item.text ? row.find('span').text(item.text) : '';
- if (item.action) {
- row.find('a').click(function() {
- item.action(e.target);
- });
- }
- }
- });
- return m;
- }
- this.live('contextmenu', function(e) {
- var m = create(e).show("fast");
- var left = e.pageX + opt.offsetX, top = e.pageY + opt.offsetY, p = {
- wh : menu(window).height(),
- ww : menu(window).width(),
- mh : m.height(),
- mw : m.width()
- }
- top = (top + p.mh) >= p.wh ? (top -= p.mh) : top;
- //当菜单超出窗口边界时处理
- left = (left + p.mw) >= p.ww ? (left -= p.mw) : left;
- m.CSS({
- zIndex : 10000,
- left : left,
- top : top
- });
- $(document.body).live('contextmenu click', function() {
- m.hide("fast",function(){
- m.remove();
- });
- });
- return false;
- });
- return this;
- }
- })(jQuery);
- //该片段来自于http://www.codesnippet.cn/detail/090120148479.html
来源: http://www.codesnippet.cn/detail/090120148479.html