我的漫漫程序之旅

          專注于JavaWeb開發
          隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
          數據加載中……

          JQuery之ContextMenu(右鍵菜單)

           

          插件下載地址:
          http://www.trendskitchens.co.nz/jquery/contextmenu/jquery.contextmenu.r2.js
          壓縮版:
          http://www.trendskitchens.co.nz/jquery/contextmenu/jquery.contextmenu.r2.packed.js

          Jquery主頁:   http://jquery.com/

          插件中的參數說明:
          Parameters
          menu_id
          The id of the menu as defined in your markup. You can bind one or more elements to a menu. Eg $("table td").contextMenu("myMenu") will bind the menu with id "myMenu" to all table cells. 
          Note: This behaviour has changed from r1 where you needed a "#" before the id 

          settings
          ContextMenu takes an optional settings object that lets you style your menu and bind click handlers to each option. ContextMenu supports the following properties in the settings object: 

          bindings 
          An object containing "id":function pairs. The supplied function is the action to be performed when the associated item is clicked. The element that triggered the current menu is passed to this handler as the first parameter. 
          Note: This behaviour has changed from r1 where you needed a "#" before the id 
          menuStyle 
          An object containing styleName:value pairs for styling the containing 
          <ul> menu. 
          itemStyle 
          An object containing styleName:value pairs for styling the 
          <li> elements. 
          itemHoverStyle 
          An object containing styleName:value pairs for styling the hover behaviour of 
          <li> elements. 
          shadow 
          Boolean: display a basic drop shadow on the menu. 
          Defaults to true 
          eventPosX 
          Allows you to define which click event is used to determine where to place the menu. There are possibly times (particularly in IE6) where you will need to set this to "clientX". 
          Defaults to: 'pageX' 
          eventPosY 
          Allows you to define which click event is used to determine where to place the menu. There are possibly times (particularly in IE6) where you will need to set this to "clientY". 
          Defaults to: 'pageY' 
          onContextMenu(event) 
          A custom event function which runs before the context menu is displayed. If the function returns false the menu is not displayed. This allows you to attach the context menu to a large block element (or the entire document) and then filter on right click whether or not the context menu should be shown. 
          onShowMenu(event, menu) 
          A custom event function which runs before the menu is displayed. It is passed a reference to the menu element and allows you to manipulate the output before the menu is shown. This allows you to hide/show options or anything else you can think of before showing the context menu to the user. This function must return the menu. 

          通過此插件可以在不同的html元素內建立contextmenu,并且可以自定義樣式.

          <HTML>
           
          <HEAD>
            
          <TITLE> JQuery右鍵菜單 </TITLE>
            
          <script  src="jquery-1.2.6.min.js"></script>
            
          <script src="jquery.contextmenu.r2.js"></script>
           
          </HEAD>

           
          <BODY>
           
          <span class="demo1" style="color:green;">
              右鍵點此
           
          </span>
          <hr />
          <div id="demo2">
              右鍵點此
          </div>
          <hr />
          <div class="demo3" id="dontShow">
            不顯示
          </div>
          <hr />
          <div class="demo3" id="showOne">
            顯示第一項
          </div>
          <hr />
          <div class="demo3" id="showAll">
            顯示全部
          </div>

          <hr />
              
          <!--右鍵菜單的源-->
               
          <div class="contextMenu" id="myMenu1">
                
          <ul>
                  
          <li id="open"><img src="folder.png" /> 打開</li>
                  
          <li id="email"><img src="email.png" /> 郵件</li>
                  
          <li id="save"><img src="disk.png" /> 保存</li>
                  
          <li id="delete"><img src="cross.png" /> 關閉</li>
                
          </ul>
              
          </div>

              
          <div class="contextMenu" id="myMenu2">
                  
          <ul>
                    
          <li id="item_1">選項一</li>
                    
          <li id="item_2">選項二</li>
                    
          <li id="item_3">選項三</li>
                    
          <li id="item_4">選項四</li>
                  
          </ul>
             
          </div>
              
               
          <div class="contextMenu" id="myMenu3">
                   
          <ul>
                    
          <li id="item_1">csdn</li>
                    
          <li id="item_2">javaeye</li>
                    
          <li id="item_3">itpub</li>
                  
          </ul>
              
          </div>
           
          </BODY>
           
          <script>
              
          //所有class為demo1的span標簽都會綁定此右鍵菜單
               $('span.demo1').contextMenu('myMenu1', 
               
          {
                    bindings: 
                    
          {
                      'open': 
          function(t) {
                        alert('Trigger was '
          +t.id+'\nAction was Open');
                      }
          ,
                      'email': 
          function(t) {
                        alert('Trigger was '
          +t.id+'\nAction was Email');
                      }
          ,
                      'save': 
          function(t) {
                        alert('Trigger was '
          +t.id+'\nAction was Save');
                      }
          ,
                      '
          delete': function(t) {
                        alert('Trigger was '
          +t.id+'\nAction was Delete');
                      }

                    }


              }
          );
              
          //所有html元素id為demo2的綁定此右鍵菜單
              $('#demo2').contextMenu('myMenu2', {
                
          //菜單樣式
                menuStyle: {
                  border: '2px solid #
          000'
                }
          ,
                
          //菜單項樣式
                itemStyle: {
                  fontFamily : 'verdana',
                  backgroundColor : 'green',
                  color: 'white',
                  border: 'none',
                  padding: '1px'

                }
          ,
                
          //菜單項鼠標放在上面樣式
                itemHoverStyle: {
                  color: 'blue',
                  backgroundColor: 'red',
                  border: 'none'
                }
          ,
                
          //事件    
                bindings: 
                    
          {
                      'item_1': 
          function(t) {
                        alert('Trigger was '
          +t.id+'\nAction was item_1');
                      }
          ,
                      'item_2': 
          function(t) {
                        alert('Trigger was '
          +t.id+'\nAction was item_2');
                      }
          ,
                      'item_3': 
          function(t) {
                        alert('Trigger was '
          +t.id+'\nAction was item_3');
                      }
          ,
                      'item_4': 
          function(t) {
                        alert('Trigger was '
          +t.id+'\nAction was item_4');
                      }

                    }

              }
          );
              
          //所有div標簽class為demo3的綁定此右鍵菜單
              $('div.demo3').contextMenu('myMenu3', {
              
          //重寫onContextMenu和onShowMenu事件
                onContextMenu: function(e) {
                  
          if ($(e.target).attr('id') == 'dontShow') return false;
                  
          else return true;
                }
          ,

                onShowMenu: 
          function(e, menu) {
                  
          if ($(e.target).attr('id') == 'showOne') {
                    $('#item_2, #item_3', menu).remove();
                  }

                  
          return menu;
                }


              }
          );



           
          </script>
          </HTML>
          效果圖:


          posted on 2009-01-06 14:11 々上善若水々 閱讀(66524) 評論(10)  編輯  收藏 所屬分類: JQuery

          評論

          # re: JQuery之ContextMenu(右鍵菜單)  回復  更多評論   

          樓主你好,能幫忙指出代碼中哪里判斷的點擊的是右鍵 嗎。
          2009-05-22 10:30 | sc

          # re: JQuery之ContextMenu(右鍵菜單)  回復  更多評論   

          onContextMenu: function(e) {
          if ($(e.target).attr('id') == 'dontShow') return false;
          else return true;
          },
          2009-05-25 11:48 | supercrsky

          # re: JQuery之ContextMenu(右鍵菜單)  回復  更多評論   

          樓主你好:
          能否解釋一下這句的意思:
          $('#'+id, menu).bind('click', function(e)
          如果我不使用xpath方式,用css方式應該怎么樣謝謝,
          2009-11-11 05:57 | river

          # re: JQuery之ContextMenu(右鍵菜單)[未登錄]  回復  更多評論   

          可否說下怎樣實現,含字菜單
          2010-09-28 17:21 | calvin

          # re: JQuery之ContextMenu(右鍵菜單)  回復  更多評論   

          你好, $("td").livequery(function (e) {
          var td = $(this);

          $(this).contextMenu('myMenu1', {

          bindings: {

          'factory': function (t) {



          },

          'email': function (t) {

          alert('Trigger was ' + $("#hide1").val() + '\nAction was Email');
          location.href = "location.aspx?trid=" + $("#hide1").val();

          },

          'save': function (t) {

          alert('Trigger was ' + t.id + '\nAction was Save');

          },

          'inv': function (t) {

          alert('Trigger was ' + t.id + '\nAction was Delete');

          },

          'insert': function (t) {

          var a = "<tr><td id='a'></td><td id='b'></td><td></td><td></td><td></td></tr>"
          $("tbody").append(a);

          },

          'delete': function (t) {

          alert(t.id);
          alert($("#hide1").val());

          },

          'color': function (t) {

          var offset = td.offset();


          $("#colorselections").css({
          "top": offset.top + "px",
          "left": offset.left + "px"
          }).show();
          $("#colorselections a").click(function () {
          $(this).addClass("on").parent().siblings().children().removeClass("on");
          alert(td.attr("id"));
          $("#" + td.attr("id")).css("color", $(this).css("background-color"));

          });

          }









          }//binding

          }); //contextMenu

          });
          這是我寫的程序,我想改變td中字體的顏色,可是我改變了一個td的字體顏色,然后再改變另一個td的顏色,結果所有的td的顏色都變成一樣的了。
          2010-12-13 10:34 | wtq

          # re: JQuery之ContextMenu(右鍵菜單)  回復  更多評論   

          真歷害,非常感謝師傅
          2010-12-13 21:18 | 小王

          # re: JQuery之ContextMenu(右鍵菜單)  回復  更多評論   

          問一下就是在右擊的時候同時改變div的背景色怎么辦
          2010-12-16 10:33 | re

          # re: JQuery之ContextMenu(右鍵菜單)  回復  更多評論   

          樓主,當屏蔽右鍵菜單中的一個菜單時,菜單沒有辦法操作了,是contextMenu的bug嗎?要如何解決呀?
          2011-05-19 10:42 | linian

          # re: JQuery之ContextMenu(右鍵菜單)  回復  更多評論   

          右鍵菜單過長時,在稍微靠下位置會撐開頁面,應該怎么解決
          ?謝謝
          2012-01-16 15:56 | ai

          # re: JQuery之ContextMenu(右鍵菜單)  回復  更多評論   

          我很急,請幫忙解決一下,謝了!!!
          2012-01-16 15:56 | ai

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 自贡市| 古田县| 定西市| 青铜峡市| 和林格尔县| 昭觉县| 砀山县| 盐亭县| 天津市| 广平县| 高邑县| 舞阳县| 星座| 桐柏县| 浏阳市| 临武县| 云林县| 科尔| 安达市| 卫辉市| 遂宁市| 自治县| 石楼县| 交城县| 永年县| 太白县| 温宿县| 宜君县| 大姚县| 鲁山县| 博乐市| 信丰县| 芜湖县| 临安市| 扎囊县| 株洲县| 龙门县| 磴口县| 南陵县| 澄迈县| 应用必备|