JSP----jQuery插件ContextMenu生成右键菜单

18 篇文章 0 订阅

讲述三个内容:

一:简介

二:使用示例

三:在jsp中动态生成的代码记录


一:简介

ContextMenu 
译自:http://www.trendskitchens.co.nz/jquery/contextmenu/ 



ContextMenu是一个轻量级jQuery插件,用于选择性地用自己创建的菜单代替浏览器的默认右键菜单。 


特点 
1.可以在一个页面中使用多个右键菜单; 
2.一个右键菜单可以被绑定到多个元素上; 
3.可以完全定制菜单的样式; 
4.可以设置回调函数。 


使用 
$(elements).contextMenu(String menu_id [, Object settings]);你需要用HTML标记定义菜单结构。对每一个菜单,在一个div中放置一个无序列表(ul标记),设置这个div的class属性为”contextMenu”,并为其添加id属性。这个div可以被放置在任何地方,它将被插件自动隐藏掉。 


你可以在页面中定义任意多的菜单。每一个li标记被作为菜单中的一个菜单项。给li标记添加一个唯一的id,这样便可以为其绑定动作。 


注意:ContextMenu目前尚不支持嵌套菜单,这一特性也许会在下一个版本中添加。 


参数 
menu_id在div标记中定义的id属性值。你可以为一个或者多个标记绑定菜单。例如:$(“table td”).contextMenu(“myMenu”)将会给所有的td标记添加id是myMenu的菜单。 


注意:相对于r1版本,r2版本中要求在id前添加一个”#”。 


settings可选参数,用于改变菜单的样式和为菜单项绑定函数。ConTextMenu在settings对象中支持如下属性: 


bindings一个对象,包含多个”id”:function对,用于给每一个菜单项关联单击的处理函数。触发当前菜单的标记会作为参数传给这个处理函数。 


menuStyle一个对象,包含多个styleName:value对,用于给包含的ul标记设置css样式。 


itemStyle一个对象,包含多个styleName:value对,用于给包含的li标记设置css样式。 


itemHoverStyle一个对象,包含多个styleName:value对,用于给鼠标滑过处的li标记设置css样式。 


shadow布尔类型,设置在菜单下是否显示阴影。默认是true。 


eventPosX允许自定义哪一个单击事件用来决定显示菜单的横向位置。有时(尤其对于IE6)你需要将其设置成”clientX”。默认是”pageX”。 


eventPosY允许自定义哪一个单击事件用来决定显示菜单的纵向位置。有时(尤其对于IE6)你需要将其设置成”clientY”。默认是”pageX”。 


onContextMenu(event)在菜单显示前的回调函数。如果该函数返回false,菜单便不会显示。这允许你将上下文菜单(即右键菜单)放置于一个大的块级元素(甚至是整个文档)中,然后在右键单击时通过过滤以决定上下文菜单是否显示。 


onShowMenu(event, menu)在菜单显示前的回调函数。它传入菜单元素的引用,允许在菜单显示前控制输出。它使我们可以在显示菜单前隐藏/显示菜单项或者其他操作。这个函数必须返回menu。 


改变默认属性值 
除了可以通过settings对象给每一个菜单传递样式信息,我们还可以通过调用$.contextMenu.defaults(settings)扩展所有菜单的default选项。除了bindings属性,其他的每一个都将其作为默认值。 



二:使用示例

[html]  view plain  copy
  1. <HTML>  
  2.  <HEAD>  
  3.   <TITLE> JQuery右键菜单 </TITLE>  
  4.   <script  src="jquery-1.2.6.min.js"></script>  
  5.   <script src="jquery.contextmenu.r2.js"></script>  
  6.  </HEAD>  
  7.   
  8.  <BODY>  
  9.  <span class="demo1" style="color:green;">  
  10.     右键点此  
  11.  </span>  
  12. <hr />  
  13. <div id="demo2">  
  14.     右键点此  
  15. </div>  
  16. <hr />  
  17. <div class="demo3" id="dontShow">  
  18.   不显示  
  19. </div>  
  20. <hr />  
  21. <div class="demo3" id="showOne">  
  22.   显示第一项  
  23. </div>  
  24. <hr />  
  25. <div class="demo3" id="showAll">  
  26.   显示全部  
  27. </div>  
  28.   
  29. <hr />  
  30.     <!--右键菜单的源-->  
  31.      <div class="contextMenu" id="myMenu1">  
  32.       <ul>  
  33.         <li id="open"><img src="folder.png" /> 打开</li>  
  34.         <li id="email"><img src="email.png" /> 邮件</li>  
  35.         <li id="save"><img src="disk.png" /> 保存</li>  
  36.         <li id="delete"><img src="cross.png" /> 关闭</li>  
  37.       </ul>  
  38.     </div>  
  39.   
  40.     <div class="contextMenu" id="myMenu2">  
  41.         <ul>  
  42.           <li id="item_1">选项一</li>  
  43.           <li id="item_2">选项二</li>  
  44.           <li id="item_3">选项三</li>  
  45.           <li id="item_4">选项四</li>  
  46.         </ul>  
  47.    </div>  
  48.       
  49.      <div class="contextMenu" id="myMenu3">  
  50.          <ul>  
  51.           <li id="item_1">csdn</li>  
  52.           <li id="item_2">javaeye</li>  
  53.           <li id="item_3">itpub</li>  
  54.         </ul>  
  55.     </div>  
  56.  </BODY>  
  57.  <script>  
  58.     //所有class为demo1的span标签都会绑定此右键菜单  
  59.      $('span.demo1').contextMenu('myMenu1',   
  60.      {  
  61.           bindings:   
  62.           {  
  63.             'open': function(t) {  
  64.               alert('Trigger was '+t.id+'\nAction was Open');  
  65.             },  
  66.             'email': function(t) {  
  67.               alert('Trigger was '+t.id+'\nAction was Email');  
  68.             },  
  69.             'save': function(t) {  
  70.               alert('Trigger was '+t.id+'\nAction was Save');  
  71.             },  
  72.             'delete': function(t) {  
  73.               alert('Trigger was '+t.id+'\nAction was Delete');  
  74.             }  
  75.           }  
  76.   
  77.     });  
  78.     //所有html元素id为demo2的绑定此右键菜单  
  79.     $('#demo2').contextMenu('myMenu2', {  
  80.       //菜单样式  
  81.       menuStyle: {  
  82.         border: '2px solid #000'  
  83.       },  
  84.       //菜单项样式  
  85.       itemStyle: {  
  86.         fontFamily : 'verdana',  
  87.         backgroundColor : 'green',  
  88.         color: 'white',  
  89.         border: 'none',  
  90.         padding: '1px'  
  91.   
  92.       },  
  93.       //菜单项鼠标放在上面样式  
  94.       itemHoverStyle: {  
  95.         color: 'blue',  
  96.         backgroundColor: 'red',  
  97.         border: 'none'  
  98.       },  
  99.       //事件      
  100.       bindings:   
  101.           {  
  102.             'item_1': function(t) {  
  103.               alert('Trigger was '+t.id+'\nAction was item_1');  
  104.             },  
  105.             'item_2': function(t) {  
  106.               alert('Trigger was '+t.id+'\nAction was item_2');  
  107.             },  
  108.             'item_3': function(t) {  
  109.               alert('Trigger was '+t.id+'\nAction was item_3');  
  110.             },  
  111.             'item_4': function(t) {  
  112.               alert('Trigger was '+t.id+'\nAction was item_4');  
  113.             }  
  114.           }  
  115.     });  
  116.     //所有div标签class为demo3的绑定此右键菜单  
  117.     $('div.demo3').contextMenu('myMenu3', {  
  118.     //重写onContextMenu和onShowMenu事件  
  119.       onContextMenu: function(e) {  
  120.         if ($(e.target).attr('id') == 'dontShow') return false;  
  121.         else return true;  
  122.       },  
  123.   
  124.       onShowMenu: function(e, menu) {  
  125.         if ($(e.target).attr('id') == 'showOne') {  
  126.           $('#item_2, #item_3', menu).remove();  
  127.         }  
  128.         return menu;  
  129.       }  
  130.   
  131.     });  
  132.   
  133.   
  134.   
  135.  </script>  
  136. </HTML>  

效果图:





三:在jsp中动态生成的代码记录

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <script src="<%=basePath%>js/jquery.contextmenu.r2.packed.js"></script>  
  2. <script language="javascript">  
  3.     $(document).ready(function() {  
  4.         initMenuContext();  
  5.     });  
  6.   
  7.     function initMenuContext() {  
  8.   
  9.         <s:iterator value="#basicInfoValues"  status="status">  
  10.         //alert("<s:property value="id"/>");  
  11.   
  12.         // $('#basicInfo_table td span').contextMenu('myMenu1',   
  13.         $("#<s:property value="id"/>span").contextMenu(  
  14.                 '<s:property value="id"/>', {  
  15.   
  16.                 });  
  17.   
  18.         </s:iterator>  
  19.   
  20.     }  
  21. </script>  
  22.   
  23.   
  24.             <s:if test="#basicInfoValues!=null&#basicInfoValues.size()>0">  
  25.                         <s:iterator value="#basicInfoValues"  status="status">  
  26.                             <tr>  
  27.                                 <td width="50%"><strong><span id="<s:property value="id"/>span"  info="<s:property value="rawSources"/>"><s:property value="name" /></span>  
  28.                                 </strong><a  
  29.                                     href="<%=basePath%>info/query?pname=<s:property value="name" />&value=<s:property value="value"/>&compare=EQ">  
  30.                                         <s:property value="value" />  
  31.                                 </a>  
  32.                                 </td>  
  33.                             </tr>  
  34.                             <div class="contextMenu" id="<s:property value="id"/>">  
  35.       <ul>  
  36.       <s:iterator value="rawSources" >  
  37.         <li ><a href="<s:property value="url"/>"><s:property value="type"/></a></li>         
  38.         </s:iterator>  
  39.       </ul>  
  40.     </div>  
  41.                         </s:iterator>  
  42.                     </s:if>  

效果图:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值