[2012-04-12] Contextmenu 右键菜单 v0.1 版本发布

[功能] 在特定区域弹出右键菜单

[功能] 可以在弹出右键菜单区域内,再屏蔽某个小区域。

[功能] 有两种方式添加右键菜单项,参数配置添加和指定ID项。

[功能] 支持事件回调,有两种,一种以参数配置方式对应回调,指定ID项统一回调,可根据设置链接标签区别。

[2012-04-29]Contextmenu 右键菜单 v0.2版本更新

[修正] 修正了指定ID添加内容在不存在时的bug。

[新增] 新增了菜单失效后变成灰色,事件回调失效的功能。

[调整] 调整了部分css,源代码分为模型,和调试部分。

插件说明

Contextmenu 是一款基于 jQuery 的多功能对话框插件。

运行环境

兼容 IE6+、Firefox、Chrome、Opera 等主流浏览器。

使用授权

Contextmenu 永久免费使用,如果有好的建议,请 Email:   atlatl333@126.com , Contextmenu 的完善需要大家的好建议。

由于配置整体项目开发要用到右键菜单,比如表格,web桌面等。介绍右键菜单设计有哪些功能,可以根据配置文件注释得知。

  1. var defaults={
  2. offsetX:2,//鼠标在X轴偏移量
  3. offsetY:2,//鼠标在Y轴偏移量
  4. speed:300,//特效速度
  5. flash:!1,//特效是否开启,默认不开启
  6. flashMode:'',//特效模式,与flash为真时使用
  7. cancel:!1,//排除不出现右键菜单区域
  8. items:[],//菜单项
  9. action:$.noop()//自由菜单项回到事件
  10. };

关于右键菜单的添加有两种方式: 一种是以items项添加并直接带有事件回调;

  1. <script type="text/javascript">
  2. $(function(){
  3. $('#WincontextMenu-Test').WinContextMenu({
  4. cancel:'.cancel',
  5. items:[{
  6. id:'Item1',
  7. text:'Item1项',
  8. icon:'../skins/default/contextmenu/icons/Sync.png',
  9. disable:!0,//新增加true/false
  10. action:function(){alert('first-item1')}//按照项添加
  11. },
  12. {
  13. id:'Item2',
  14. text:'Item2项',
  15. icon:'../skins/default/contextmenu/icons/Calendar.png',
  16. action:function(){alert('Second-item2')}//按照项添加
  17. }],
  18. action:function(e){alert(e.id);}//自由设计项事件回调
  19. });
  20. });
  21. </script>

第二种在web页面中按指定的ID为WincontextMenu添加li标记

  1. <div id="WincontextMenu" class="WincontextMenu" style="top:100px; left:230px; display:none;">
  2. <li><a id="copy" href="#"><img src="../skins/default/contextmenu/icons/Copy.png"><span>复制</span></a></li>
  3. <li><a id="create" href="#"><img src="../skins/default/contextmenu/icons/New.png"><span>新建</span></a></li>
  4. <div class="m-split"></div>
  5. <li><a id="save" href="#"><img src="../skins/default/contextmenu/icons/Save.png"><span>保存</span></a></li>
  6. <li><a id="table" href="#" class="cmDisable"><img src="../skins/default/contextmenu/icons/table.png"><span>表格</span></a></li>
  7. <li><a id="setup" href="#"><img src="../skins/default/contextmenu/icons/Pinion.png"><span>设置</span></a></li>
  8. </div>

以上两种添加方式是以items项添加在前,按指定ID追加的排在后。

百闻不如一见,还是直接奔源代码去……本页面有下载。

代码片段(4)

[文件] AdminInterface-Contextmenu(源码v0.2).rar ~ 268KB    下载(34)

[代码] jquery UI contextmenu 右键菜单
 
  1. /*
  2. * Author:antianlu
  3. * Date:2012-04-21
  4. * Plugin name:jQuery.Contextmenu
  5. * Address:http://www.oschina.net/code/snippet_153403_9880
  6. * Version:0.2
  7. * Email:atlatl333@126.com
  8. */
  9. (function(cm){
  10. jQuery.fn.WinContextMenu=function(options){
  11. var defaults={
  12. offsetX:2,//鼠标在X轴偏移量
  13. offsetY:2,//鼠标在Y轴偏移量
  14. speed:300,//特效速度
  15. flash:!1,//特效是否开启,默认不开启
  16. flashMode:'',//特效模式,与flash为真时使用
  17. cancel:!1,//排除不出现右键菜单区域
  18. items:[],//菜单项
  19. action:$.noop()//自由菜单项回到事件
  20. };
  21. var opt=cm.extend(true,defaults,options);
  22. function create(e){
  23. var m=cm('<ul class="WincontextMenu"></ul>').appendTo(document.body);
  24. cm.each(opt.items,function(i,itm){
  25. if(itm){
  26. var row=cm('<li><a class="'+(itm.disable?'cmDisable':'')+'" ref="sitem" href="javascript:void(0)"><span></span></a></li>').appendTo(m);
  27. itm.icon?cm('<img src="'+itm.icon+'">').insertBefore(row.find('span')):'';
  28. itm.text?row.find('span').text(itm.text):'';
  29. if(itm.action) {
  30. row.find('a').click(function(){this.className!='cmDisable'?itm.action(e):null;});}
  31. }
  32. });
  33. if(cm('#WincontextMenu').html()!=null){
  34. cm(cm('#WincontextMenu').html().replace(/#/g,'javascript:void(0)')).appendTo(m);}
  35. return m;
  36. }
  37. if(opt.cancel){//排除不出现右键菜单区域
  38. cm(opt.cancel).live('contextmenu',function(e){return false});}
  39. this.live('contextmenu',function(e){
  40. var m=create(e).show();
  41. var l = e.pageX + opt.offsetX,
  42. t = e.pageY+opt.offsetY,
  43. p={
  44. wh:cm(window).height(),
  45. ww:cm(window).width(),
  46. mh:m.height(),
  47. mw:m.width()
  48. }
  49. t=(t+p.mh)>=p.wh?(t-=p.mh):t;//当菜单超出窗口边界时处理
  50. l=(l+p.mw)>=p.ww?(l-=p.mw):l;
  51. m.css({zIndex:1000001, left:l, top:t}).live('contextmenu', function() { return false; });
  52. m.find('a').click(function(e){//呼叫新从页面增加的菜单项
  53. var b=$(this).attr('ref');
  54. if(b!='sitem'){this.className!='cmDisable'?opt.action(this):null;}
  55. e.preventDefault();
  56. });
  57. cm(document.body).live('contextmenu click', function() {//防止有动态加载的标签失效问题
  58. m.remove();
  59. });
  60. return false;
  61. });
  62. return this;
  63. }
  64. })(jQuery);

原文地址:http://www.oschina.net/code/snippet_153403_9880

[xPlugins] jQuery Contextmenu右键菜单的更多相关文章

  1. 3种不同的ContextMenu右键菜单演示

    简单使用的右键菜单,希望能帮助大家.下面是截图和实例代码 实例预览 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/ ...

  2. vue2.0的contextmenu右键菜单

    1.事情对象 <!DOCTYPE html> <html> <head> <title></title> <meta charset= ...

  3. WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法

    原文:WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法 问题描述 今天发现如果我想在一个TextBlock弄一个右键菜单,并且使用Command绑定,结果发 ...

  4. JQuery之ContextMenu(右键菜单)

    插件下载地址:http://www.trendskitchens.co.nz/jquery/contextmenu/jquery.contextmenu.r2.js压缩版:http://www.tre ...

  5. jquery实现右键菜单

    <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/h ...

  6. jQuery EasyUI 右键菜单--关闭标签/选项卡

    目录结构: noContextMenu.js 文件内容如下: $(function(){ //屏蔽右键菜单 $(document).bind("contextmenu", func ...

  7. 用jQuery修改右键菜单

    概述 以前在网上找过屏蔽右键菜单的代码,也找过屏蔽F12的代码,今天无意之中看到别人的右键菜单很有意思,我也想来搞一个. 思路 建立一个菜单并且隐藏起来. 用window.oncontextmenu屏 ...

  8. jquery 自定义右键菜单

    如果要自定义右键菜单,那么就需要禁止原本的右键菜单,代码如下 document.oncontextmenu = new Function("return false;");//禁止 ...

  9. 实现JQuery EasyUI右键菜单变灰不可用效果

    使用过EasyUI的朋友想必都知道疯狂秀才写的后台界面吧,作为一个初学者我不敢妄自评论它的好坏,不过它确实给我们提供了一个很好框架,只要在它的基础上进行修改,基本上都可以满足我们开发的需要. 知道“疯 ...

随机推荐

  1. 如何通过WallpaperManager(壁纸管理器)设置与修改壁纸?

    WallpaperManager(壁纸管理器),是手机壁纸相关的一个API的相关类.其设置壁纸常有如下三种方法可调用: - setBitmap(Bitmap bitmap):将壁纸设置为bitmap所 ...

  2. Leetcode0002--Add Two Numbers 链表求和

    [转载请注明]http://www.cnblogs.com/igoslly/p/8672467.html 来看一下题目: You are given two non-empty linked list ...

  3. Java多线程中常见的几个问题

    我们都知道,在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口. 1.进程和线程的区别是什么? 进程是执行着的应用程序,而线程是进程内部的一个执行序列. ...

  4. MOOC推荐及三门基础学科

    top1:学堂在线 http://www.xuetangx.com/ top2:网易云课堂 http://study.163.com/ top3:coursera https://www.course ...

  5. 【剑指Offer】47、求1+2+3+4+···+n

      题目描述:   求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C).   解题思路:   本题本身没有太多 ...

  6. 【深度学习框架】使用PyTorch进行数据处理

      在深度学习中,数据的处理对于神经网络的训练来说十分重要,良好的数据(包括图像.文本.语音等)处理不仅可以加速模型的训练,同时也直接关系到模型的效果.本文以处理图像数据为例,记录一些使用PyTorc ...

  7. codeforces 466B Wonder Room(思维,暴力)

    题目 参考了别人的博客,百度来的博客 #include<iostream> #include<string> #include<stdio.h> #include& ...

  8. Python语言数据结构和语言结构(2)

    目录 1. Python预备基础 2. Python数据类型 3. Python条件语句 4. while循环和for循环 1. Python预备基础 1.1 变量的命名   变量命名规则主要有以下几 ...

  9. jquery怎样获取多个复选框的值?

    jquery的遍历方法可以获取复选框所欲的选中值 1 2 $("input:checkbox:checked").each(function(index,element));    ...

  10. 【[Offer收割]编程练习赛10 B】出勤记录II

    [题目链接]:http://hihocoder.com/problemset/problem/1482 [题意] [题解] 递推题. 每次增加3个字符中的一个;然后根据下面这个数组递推; 递推方式看程 ...