/* * smartMenu.js 智能上下文菜单插件 * http://www.zhangxinxu.com/ * * Copyright 2011, zhangxinxu * * 2011-05-26 v1.0 编写 * 2011-06-03 v1.1 修复func中this失准问题 */ (function(a){var b=a(document).data("func",{}),c=a("body");a.smartMenu=a.noop;a.fn.smartMenu=function(g,d){var h={name:"",offsetX:2,offsetY:2,textLimit:6,beforeShow:a.noop,afterShow:a.noop};var i=a.extend(h,d||{});var f=function(k){var m=k||g,j=k?Math.random().toString():i.name,o="",n="",l="smart_menu_";if(a.isArray(m)&&m.length){o='
"}return o},e=function(){var j="#smartMenu_",l="smart_menu_",k=a(j+i.name);if(!k.size()){a("body").append(f());a(j+i.name+" a").bind("click",function(){var m=a(this).attr("data-key"),n=b.data("func")[m];if(a.isFunction(n)){n.call(b.data("trigger"))}a.smartMenu.hide();return false});a(j+i.name+" li").each(function(){var m=a(this).attr("data-hover"),n=l+"li_hover";if(m){a(this).hover(function(){a(this).addClass(n).children("."+l+"box").show();a(this).children("."+l+"a").addClass(l+"a_hover")},function(){a(this).removeClass(n).children("."+l+"box").hide();a(this).children("."+l+"a").removeClass(l+"a_hover")})}});return a(j+i.name)}return k};a(this).each(function(){this.oncontextmenu=function(l){if(a.isFunction(i.beforeShow)){i.beforeShow.call(this)}l=l||window.event;l.cancelBubble=true;if(l.stopPropagation){l.stopPropagation()}a.smartMenu.hide();var k=b.scrollTop();var j=e();if(j){j.css({display:"block",left:l.clientX+i.offsetX,top:l.clientY+k+i.offsetY});b.data("target",j);b.data("trigger",this);if(a.isFunction(i.afterShow)){i.afterShow.call(this)}return false}}});if(!c.data("bind")){c.bind("click",a.smartMenu.hide).data("bind",true)}};a.extend(a.smartMenu,{hide:function(){var d=b.data("target");if(d&&d.css("display")==="block"){d.hide()}},remove:function(){var d=b.data("target");if(d){d.remove()}}})})(jQuery);