//jQuery上下文菜单插件////版本1.01////Cory S.N.LaViska公司//一个美丽的网站(http://abeatutily网站/)////更多信息:http://abeautily网站.net/2008/09/jquery-context-menu-plugin/////使用条款////此插件根据GNU通用公共许可证获得双重许可//以及麻省理工学院许可证,版权归A Beautiful Site,LLC所有。//(函数($){扩展美元($.fn{contextMenu:函数(o,回调){//默认值如果(o.menu==未定义)返回false;如果(o.inSpeed==未定义)o.inSweed=150;如果(o.outSpeed==未定义)o.outSpeed=75;//0需要为-1才能获得预期结果(不褪色)如果(o.inSpeed==0)o.inSweed=-1;如果(o.outSpeed==0)o.outSweed=-1;//循环每个上下文菜单$(this).each(function()){var el=$(本);var偏移=$(el).offset();//添加contextMenu类$('#'+o.menu).addClass('contextMenu');//模拟真正的右键单击$(this).moosedown(函数(e){var evt=e;//将contextmenu元素移动到DOM的末尾,以便正确定位$(“.contextMenu”).addClass('cm-contextMenu').remove().appendTo('body');evt.stopPropagation();$(this).mouseup(函数(e){e.停止传播();var srcElement=$(this);$(this).unbind('mouseup');if(evt.button==2){//隐藏可能显示的上下文菜单$(“.contextMenu”).hide();//获取此上下文菜单var菜单=$('#'+o.menu);if($(el).hasClass('disabled'))返回false;//检测鼠标位置变量d={},x,y;if(自内高度){d.pageYOffset=自页面Y偏移;d.pageXOffset=自页面X偏移;d.inerHeight=self.innerHeight;d.innerWidth=self.innerWidth;}else if(document.documentElement&&document.documentElement.clientHeight){d.pageYOffset=文档.documentElement.scrollTop;d.pageXOffset=文档.documentElement.scrollLeft;d.innerHeight=document.documentElement.clientHeight;d.innerWidth=document.documentElement.clientWidth;}else if(document.body){d.pageYOffset=文档.body.scrollTop;d.pageXOffset=document.body.scrollLeft;d.innerHeight=document.body.clientHeight;d.innerWidth=document.body.clientWidth;}(e.pageX)?x=e.pageX:x=e.clientX+d.crollLeft;(e.pageY)?y=e.pageY:y=e.clientY+d.crollTop;//显示菜单$(document).unbind('单击');$(菜单).css({top:y,left:x}).fadeIn(o.inSpeed);//悬停事件$(菜单).find('A').mouseover(函数(){$(menu).find('LI.hover').removeClass('hover');$(this).parent().addClass('hover');}).mousout(函数(){$(menu).find('LI.hover').removeClass('hover');});//键盘$(文档).按键(功能(e){开关(e.keyCode){案例38://以上if($(menu).find('LI.hover').size()==0){$(menu).find('LI:last').addClass('hover');}其他{$(menu).find('LI.horver').removeClass('over').prevAll('LI:not(.disabled)').eq(0).addClass('over');if($(menu).find('LI.horver').size()==0)$(menu).find('LI:last').addClass('over');}断裂;案例40://向下if($(menu).find('LI.hover').size()==0){$(menu).find('LI:first').addClass('hover');}其他{$(menu).find('LI.holver').removeClass('hover').nextAll('LI:not(.disabled)').eq(0).addClass('悬停');if($(menu).find('LI.hover').size()==0)$;}断裂;案例13://输入$(menu).find('LI.hover A').trigger('click');断裂;案例27://esc$(document).trigger('click');打破}});//选择项目时$('#'+o.menu).find('A').unbind('单击');$('#'+o.menu).fund('LI:非(.disabled)A').click(function(){$(document).unbind('click').unbind('keypress');$(“.contextMenu”).hide();//回拨if(回调)回调($(this).attr('href').substr(1),$(srcElement),{x:x-offset.left,y:y-offset.top,docX:x,docY:y});返回false;});//隐藏绑定setTimeout(function(){//Mozilla延迟$(文档).click(函数(){$(document).unbind('click').unbund('keypress');$(菜单)淡出(o.outSpeed);返回false;});}, 0);}});});//禁用文本选择如果($.browser.mozilla){$('#'+o.menu).each(function(){$(this).css({'MozUserSelect':'none'});});}否则如果($.browser.msie){$('#'+o.menu).each(function(){$(this).bind('selectstart.disableTextSelect',function){return false;});}其他{$('#'+o.menu).each(function(){$(this).bind('mousedown.disableTextSelect',function;}//禁用浏览器上下文菜单(需要两个选择器在IE/Safari+FF/Chrome中工作)$(el).add($('UL.contextMenu')).bind('contextMenu',function(){return false;});});返回$(this);},//动态禁用上下文菜单项disableContextMenuItems:函数(o){如果(o==未定义){//全部禁用$(this).find('LI').addClass('disabled');回报($(this));}$(this).each(function()){if(o!=未定义){var d=o.split(',');对于(var i=0;i<d.length;i++){$(this).find('A[href=“'+d[i]+'”]').parent().addClass('禁用');}}});返回($(this));},//动态启用上下文菜单项enableContextMenuItems:函数(o){如果(o==未定义){//全部启用$(this).find('LI.disabled').removeClass('禁用');返回($(this));}$(this).each(function){if(o!=未定义){var d=o.split(',');对于(var i=0;i<d.length;i++){$(this).find('A[href=“'+d[i]+'”]').parent().removeClass('禁用');}}});返回($(this));},//禁用上下文菜单disableContextMenu:函数(){$(this).each(function()){$(this).addClass(“禁用”);});返回($(this));},//启用上下文菜单enableContextMenu:函数(){$(this).each(function()){$(this).removeClass(“禁用”);});返回($(this));},//销毁上下文菜单destroyContextMenu:函数(){//销毁指定的上下文菜单$(this).each(function()){//禁用操作$(this).unbind('mouseown').unbind('mouseup');});返回($(this));}});})(jQuery);