【问题标题】:Making custom right-click context menus for my web-app为我的网络应用程序制作自定义右键单击上下文菜单
【发布时间】:2011-05-28 14:15:00
【问题描述】:

我有一些网站,例如 google-docs 和 map-quest,当您右键单击时,它们具有自定义下拉菜单。他们不知何故覆盖了浏览器的下拉菜单行为,我现在确定他们是如何做到的。我找到了一个 jQuery plugin 这样做,但我仍然对一些事情感到好奇:

  • 这是如何工作的?浏览器的下拉菜单是真的被覆盖了,还是只是模拟出来的效果?如果有,怎么做?
  • 插件抽象掉了什么?幕后发生了什么?
  • 这是实现此效果的唯一方法吗?

See several custom-context menus in action

【问题讨论】:

    标签: javascript jquery jquery-plugins contextmenu right-click


    【解决方案1】:

    我知道这个问题已经很老了,但只是想出了同样的问题并自己解决了,所以我会回答,以防有人像我一样通过谷歌找到这个问题。我的解决方案基于@Andrew 的解决方案,但之后基本上修改了所有内容。

    编辑:看到它最近很受欢迎,我决定更新样式,让它看起来更像 2014 年,而不像 Windows 95。我修复了 @Quantico 和 @Trengot 发现的错误所以现在这是一个更可靠的答案。

    编辑 2:我使用 StackSnippets 进行设置,因为它们是一个非常酷的新功能。我将 good jsfiddle 留在这里以供参考(点击第 4 个面板查看它们的工作)。

    新堆栈片段:

    // JAVASCRIPT (jQuery)
    
    // Trigger action when the contexmenu is about to be shown
    $(document).bind("contextmenu", function (event) {
        
        // Avoid the real one
        event.preventDefault();
        
        // Show contextmenu
        $(".custom-menu").finish().toggle(100).
        
        // In the right position (the mouse)
        css({
            top: event.pageY + "px",
            left: event.pageX + "px"
        });
    });
    
    
    // If the document is clicked somewhere
    $(document).bind("mousedown", function (e) {
        
        // If the clicked element is not the menu
        if (!$(e.target).parents(".custom-menu").length > 0) {
            
            // Hide it
            $(".custom-menu").hide(100);
        }
    });
    
    
    // If the menu element is clicked
    $(".custom-menu li").click(function(){
        
        // This is the triggered action name
        switch($(this).attr("data-action")) {
            
            // A case for each action. Your actions here
            case "first": alert("first"); break;
            case "second": alert("second"); break;
            case "third": alert("third"); break;
        }
      
        // Hide it AFTER the action was triggered
        $(".custom-menu").hide(100);
      });
    /* CSS3 */
    
    /* The whole thing */
    .custom-menu {
        display: none;
        z-index: 1000;
        position: absolute;
        overflow: hidden;
        border: 1px solid #CCC;
        white-space: nowrap;
        font-family: sans-serif;
        background: #FFF;
        color: #333;
        border-radius: 5px;
        padding: 0;
    }
    
    /* Each of the items in the list */
    .custom-menu li {
        padding: 8px 12px;
        cursor: pointer;
        list-style-type: none;
        transition: all .3s ease;
        user-select: none;
    }
    
    .custom-menu li:hover {
        background-color: #DEF;
    }
    <!-- HTML -->
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.js"></script>
    
    <ul class='custom-menu'>
      <li data-action="first">First thing</li>
      <li data-action="second">Second thing</li>
      <li data-action="third">Third thing</li>
    </ul>
    
    <!-- Not needed, only for making it clickable on StackOverflow -->
    Right click me

    注意:您可能会看到一些小错误(远离光标的下拉菜单等),请确保它在 jsfiddle 中有效,因为它比 StackSnippets 更类似于您的网页。

    【讨论】:

    • 我认为您的鼠标按下可能有问题。它可能会导致竞争条件,因为单击菜单项会触发单击,即鼠标按下和鼠标向上。
    • 感谢@Quantico,这是真的,现在应该在代码和 jsfiddle 中修复它。还有什么问题吗?旁注:哇,之前对 jsfiddle 的 170 次编辑,它肯定变得流行了。
    • 使用新的小提琴时,如果您在页面上使用任何其他 html 元素,弹出窗口将显示为透明。编辑:向 css 添加背景颜色可以解决它。
    • 另一个小问题:如果您在菜单可见时右键单击某处,它会在显示前闪烁。我觉得它应该隐藏(如默认)或隐藏然后出现在新位置。
    • @ChetanJoshi 根据 MDN 似乎应该在 IE11 上工作:developer.mozilla.org/en-US/docs/Web/Events/… 你看到任何错误吗?
    【解决方案2】:

    正如 Adrian 所说,插件将以相同的方式工作。您将需要三个基本部分:

    1:'contextmenu' 事件的事件处理程序:

    $(document).bind("contextmenu", function(event) {
        event.preventDefault();
        $("<div class='custom-menu'>Custom menu</div>")
            .appendTo("body")
            .css({top: event.pageY + "px", left: event.pageX + "px"});
    });
    

    在这里,您可以将事件处理程序绑定到要为其显示菜单的任何选择器。我选择了整个文档。

    2:'click' 事件的事件处理程序(关闭自定义菜单):

    $(document).bind("click", function(event) {
        $("div.custom-menu").hide();
    });
    

    3:控制菜单位置的CSS:

    .custom-menu {
        z-index:1000;
        position: absolute;
        background-color:#C0C0C0;
        border: 1px solid black;
        padding: 2px;
    }
    

    CSS 的重要之处在于包含z-indexposition: absolute

    将所有这些都包含在一个漂亮的 jQuery 插件中并不难。

    你可以在这里看到一个简单的演示:http://jsfiddle.net/andrewwhitaker/fELma/

    【讨论】:

    • 我认为这个上下文菜单如果在用户单击它内部时保持打开状态(但当用户单击它外部时关闭)会更有用。可以修改为以这种方式工作吗?
    • 您会在document 的点击绑定中查看event.target。如果它不在上下文菜单中,则隐藏菜单:jsfiddle.net/fELma/286
    • 我稍微修改了一下(这样可以防止同时显示多个菜单):jsfiddle.net/fELma/287
    • 我正在尝试创建一个径向右键单击上下文菜单(就像这里的那些:pushing-pixels.org/wp-content/uploads/2012/07/…)。这是了解如何去做的一个很好的开始,谢谢!
    • @AndrewWhitaker 您的回答说它将应用于整个文档。如果我希望将其应用于特定控件,例如按钮(假设其 id 为 button1)..?
    【解决方案3】:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Right Click</title>
    
        <link href="https://swisnl.github.io/jQuery-contextMenu/dist/jquery.contextMenu.css" rel="stylesheet" type="text/css" />
    
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
        <script src="https://swisnl.github.io/jQuery-contextMenu/dist/jquery.contextMenu.js" type="text/javascript"></script>
    
        <script src="https://swisnl.github.io/jQuery-contextMenu/dist/jquery.ui.position.min.js" type="text/javascript"></script>
    
    </head>
    <body>
        <span class="context-menu-one" style="border:solid 1px black; padding:5px;">Right Click Me</span>
        <script type="text/javascript">
            
            $(function() {
            $.contextMenu({
                selector: '.context-menu-one', 
                callback: function(key, options) {
                    var m = "clicked: " + key;
                    window.console && console.log(m) || alert(m); 
                },
                items: {
                    "edit": {name: "Edit", icon: "edit"},
                    "cut": {name: "Cut", icon: "cut"},
                   copy: {name: "Copy", icon: "copy"},
                    "paste": {name: "Paste", icon: "paste"},
                    "delete": {name: "Delete", icon: "delete"},
                    "sep1": "---------",
                    "quit": {name: "Quit", icon: function(){
                        return 'context-menu-icon context-menu-icon-quit';
                    }}
                }
            });
    
            $('.context-menu-one').on('click', function(e){
                console.log('clicked', this);
            })    
        });
        </script>
    </body>
    </html>

    【讨论】:

      【解决方案4】:

      以下是 javascript 中右键单击上下文菜单的示例: Right Click Context Menu

      使用原始 javasScript 代码实现上下文菜单功能。你能检查一下吗,希望这对你有帮助。

      实时代码:

      (function() {
        
        "use strict";
      
      
        /*********************************************** Context Menu Function Only ********************************/
        function clickInsideElement( e, className ) {
          var el = e.srcElement || e.target;
          if ( el.classList.contains(className) ) {
            return el;
          } else {
            while ( el = el.parentNode ) {
              if ( el.classList && el.classList.contains(className) ) {
                return el;
              }
            }
          }
          return false;
        }
      
        function getPosition(e) {
          var posx = 0, posy = 0;
          if (!e) var e = window.event;
          if (e.pageX || e.pageY) {
            posx = e.pageX;
            posy = e.pageY;
          } else if (e.clientX || e.clientY) {
            posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
            posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
          }
          return {
            x: posx,
            y: posy
          }
        }
      
        // Your Menu Class Name
        var taskItemClassName = "thumb";
        var contextMenuClassName = "context-menu",contextMenuItemClassName = "context-menu__item",contextMenuLinkClassName = "context-menu__link", contextMenuActive = "context-menu--active";
        var taskItemInContext, clickCoords, clickCoordsX, clickCoordsY, menu = document.querySelector("#context-menu"), menuItems = menu.querySelectorAll(".context-menu__item");
        var menuState = 0, menuWidth, menuHeight, menuPosition, menuPositionX, menuPositionY, windowWidth, windowHeight;
      
        function initMenuFunction() {
          contextListener();
          clickListener();
          keyupListener();
          resizeListener();
        }
      
        /**
         * Listens for contextmenu events.
         */
        function contextListener() {
          document.addEventListener( "contextmenu", function(e) {
            taskItemInContext = clickInsideElement( e, taskItemClassName );
      
            if ( taskItemInContext ) {
              e.preventDefault();
              toggleMenuOn();
              positionMenu(e);
            } else {
              taskItemInContext = null;
              toggleMenuOff();
            }
          });
        }
      
        /**
         * Listens for click events.
         */
        function clickListener() {
          document.addEventListener( "click", function(e) {
            var clickeElIsLink = clickInsideElement( e, contextMenuLinkClassName );
      
            if ( clickeElIsLink ) {
              e.preventDefault();
              menuItemListener( clickeElIsLink );
            } else {
              var button = e.which || e.button;
              if ( button === 1 ) {
                toggleMenuOff();
              }
            }
          });
        }
      
        /**
         * Listens for keyup events.
         */
        function keyupListener() {
          window.onkeyup = function(e) {
            if ( e.keyCode === 27 ) {
              toggleMenuOff();
            }
          }
        }
      
        /**
         * Window resize event listener
         */
        function resizeListener() {
          window.onresize = function(e) {
            toggleMenuOff();
          };
        }
      
        /**
         * Turns the custom context menu on.
         */
        function toggleMenuOn() {
          if ( menuState !== 1 ) {
            menuState = 1;
            menu.classList.add( contextMenuActive );
          }
        }
      
        /**
         * Turns the custom context menu off.
         */
        function toggleMenuOff() {
          if ( menuState !== 0 ) {
            menuState = 0;
            menu.classList.remove( contextMenuActive );
          }
        }
      
        function positionMenu(e) {
          clickCoords = getPosition(e);
          clickCoordsX = clickCoords.x;
          clickCoordsY = clickCoords.y;
          menuWidth = menu.offsetWidth + 4;
          menuHeight = menu.offsetHeight + 4;
      
          windowWidth = window.innerWidth;
          windowHeight = window.innerHeight;
      
          if ( (windowWidth - clickCoordsX) < menuWidth ) {
            menu.style.left = (windowWidth - menuWidth)-0 + "px";
          } else {
            menu.style.left = clickCoordsX-0 + "px";
          }
      
          // menu.style.top = clickCoordsY + "px";
      
          if ( Math.abs(windowHeight - clickCoordsY) < menuHeight ) {
            menu.style.top = (windowHeight - menuHeight)-0 + "px";
          } else {
            menu.style.top = clickCoordsY-0 + "px";
          }
        }
      
      
        function menuItemListener( link ) {
          var menuSelectedPhotoId = taskItemInContext.getAttribute("data-id");
          console.log('Your Selected Photo: '+menuSelectedPhotoId)
          var moveToAlbumSelectedId = link.getAttribute("data-action");
          if(moveToAlbumSelectedId == 'remove'){
            console.log('You Clicked the remove button')
          }else if(moveToAlbumSelectedId && moveToAlbumSelectedId.length > 7){
            console.log('Clicked Album Name: '+moveToAlbumSelectedId);
          }
          toggleMenuOff();
        }
        initMenuFunction();
      
      })();
      /* For Body Padding and content */
      body { padding-top: 70px; }
      li a { text-decoration: none !important; }
      
      /* Thumbnail only */
      .thumb {
        margin-bottom: 30px;
      }
      .thumb:hover a, .thumb:active a, .thumb:focus a {
        border: 1px solid purple;
      }
      
      /************** For Context menu ***********/
      /* context menu */
      .context-menu {  display: none;  position: absolute;  z-index: 9999;  padding: 12px 0;  width: 200px;  background-color: #fff;  border: solid 1px #dfdfdf;  box-shadow: 1px 1px 2px #cfcfcf;  }
      .context-menu--active {  display: block;  }
      
      .context-menu__items { list-style: none;  margin: 0;  padding: 0;  }
      .context-menu__item { display: block;  margin-bottom: 4px;  }
      .context-menu__item:last-child {  margin-bottom: 0;  }
      .context-menu__link {  display: block;  padding: 4px 12px;  color: #0066aa;  text-decoration: none;  }
      .context-menu__link:hover {  color: #fff;  background-color: #0066aa;  }
      .context-menu__items ul {  position: absolute;  white-space: nowrap;  z-index: 1;  left: -99999em;}
      .context-menu__items > li:hover > ul {  left: auto;  padding-top: 5px  ;  min-width: 100%;  }
      .context-menu__items > li li ul {  border-left:1px solid #fff;}
      .context-menu__items > li li:hover > ul {  left: 100%;  top: -1px;  }
      .context-menu__item ul { background-color: #ffffff; padding: 7px 11px;  list-style-type: none;  text-decoration: none; margin-left: 40px; }
      .page-media .context-menu__items ul li { display: block; }
      /************** For Context menu ***********/
      <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
      <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
      <body>
      
      
      
          <!-- Page Content -->
          <div class="container">
      
              <div class="row">
      
                  <div class="col-lg-12">
                      <h1 class="page-header">Thumbnail Gallery <small>(Right click to see the context menu)</small></h1>
                  </div>
      
                  <div class="col-lg-3 col-md-4 col-xs-6 thumb">
                      <a class="thumbnail" href="#">
                          <img class="img-responsive" src="http://placehold.it/400x300" alt="">
                      </a>
                  </div>
                  <div class="col-lg-3 col-md-4 col-xs-6 thumb">
                      <a class="thumbnail" href="#">
                          <img class="img-responsive" src="http://placehold.it/400x300" alt="">
                      </a>
                  </div>
                  <div class="col-lg-3 col-md-4 col-xs-6 thumb">
                      <a class="thumbnail" href="#">
                          <img class="img-responsive" src="http://placehold.it/400x300" alt="">
                      </a>
                  </div>
                  <div class="col-lg-3 col-md-4 col-xs-6 thumb">
                      <a class="thumbnail" href="#">
                          <img class="img-responsive" src="http://placehold.it/400x300" alt="">
                      </a>
                  </div>
                  <div class="col-lg-3 col-md-4 col-xs-6 thumb">
                      <a class="thumbnail" href="#">
                          <img class="img-responsive" src="http://placehold.it/400x300" alt="">
                      </a>
                  </div>
                  <div class="col-lg-3 col-md-4 col-xs-6 thumb">
                      <a class="thumbnail" href="#">
                          <img class="img-responsive" src="http://placehold.it/400x300" alt="">
                      </a>
                  </div>
                  <div class="col-lg-3 col-md-4 col-xs-6 thumb">
                      <a class="thumbnail" href="#">
                          <img class="img-responsive" src="http://placehold.it/400x300" alt="">
                      </a>
                  </div>
                  <div class="col-lg-3 col-md-4 col-xs-6 thumb">
                      <a class="thumbnail" href="#">
                          <img class="img-responsive" src="http://placehold.it/400x300" alt="">
                      </a>
                  </div>
      
              </div>
      
              <hr>
      
      
          </div>
          <!-- /.container -->
      
      
          <!-- / The Context Menu -->
          <nav id="context-menu" class="context-menu">
              <ul class="context-menu__items">
                  <li class="context-menu__item">
                      <a href="#" class="context-menu__link" data-action="Delete This Photo"><i class="fa fa-empire"></i> Delete This Photo</a>
                  </li>
                  <li class="context-menu__item">
                      <a href="#" class="context-menu__link" data-action="Photo Option 2"><i class="fa fa-envira"></i> Photo Option 2</a>
                  </li>
                  <li class="context-menu__item">
                      <a href="#" class="context-menu__link" data-action="Photo Option 3"><i class="fa fa-first-order"></i> Photo Option 3</a>
                  </li>
                  <li class="context-menu__item">
                      <a href="#" class="context-menu__link" data-action="Photo Option 4"><i class="fa fa-gitlab"></i> Photo Option 4</a>
                  </li>
                  <li class="context-menu__item">
                      <a href="#" class="context-menu__link" data-action="Photo Option 5"><i class="fa fa-ioxhost"></i> Photo Option 5</a>
                  </li>
                  <li class="context-menu__item">
                      <a href="#" class="context-menu__link"><i class="fa fa-arrow-right"></i> Add Photo to</a>
                      <ul>
                          <li><a href="#!" class="context-menu__link" data-action="album-one"><i class="fa fa-camera-retro"></i> Album One</a></li>
                          <li><a href="#!" class="context-menu__link" data-action="album-two"><i class="fa fa-camera-retro"></i> Album Two</a></li>
                          <li><a href="#!" class="context-menu__link" data-action="album-three"><i class="fa fa-camera-retro"></i> Album Three</a></li>
                          <li><a href="#!" class="context-menu__link" data-action="album-four"><i class="fa fa-camera-retro"></i> Album Four</a></li>
                      </ul>
                  </li>
              </ul>
          </nav>
      
          <!-- End # Context Menu -->
      
      
      </body>

      【讨论】:

      • 使用 vanilla JS 和干净的布局做得很好!
      【解决方案5】:

      浏览器的上下文菜单被覆盖。没有办法在任何主流浏览器中增加本机上下文菜单。

      由于插件正在创建自己的菜单,唯一真正被抽象的部分是浏览器的上下文菜单事件。该插件会根据您的配置创建一个 html 菜单,然后将该内容放在您点击的位置。

      是的,这是创建自定义上下文菜单的唯一方法。显然,不同的插件做的事情略有不同,但它们都会覆盖浏览器的事件并将自己的基于 html 的菜单放在正确的位置。

      【讨论】:

      【解决方案6】:

      您可以观看本教程:http://www.youtube.com/watch?v=iDyEfKWCzhg 确保上下文菜单最初是隐藏的并且具有绝对位置。这会 确保不会有多个上下文菜单和无用的上下文菜单创建。该页面的链接位于 YouTube 视频的说明中。

      $(document).bind("contextmenu", function(event){
      $("#contextmenu").css({"top": event.pageY +  "px", "left": event.pageX +  "px"}).show();
      });
      $(document).bind("click", function(){
      $("#contextmenu").hide();
      });
      

      【讨论】:

        【解决方案7】:

        我知道这也很老了。我最近需要创建一个上下文菜单,我将其注入到其他网站中,这些网站根据点击的元素具有不同的属性。

        这是相当粗糙的,并且可能有更好的方法来实现这一点。 它使用 jQuery 上下文菜单库Located Here

        我喜欢创建它,尽管你们可能会从中得到一些用处。

        这里是fiddle。我希望它可以帮助那里的人。

        $(function() {
          function createSomeMenu() {
            var all_array = '{';
            var x = event.clientX,
              y = event.clientY,
              elementMouseIsOver = document.elementFromPoint(x, y);
            if (elementMouseIsOver.closest('a')) {
              all_array += '"Link-Fold": {"name": "Link", "icon": "fa-external-link", "items": {"fold2-key1": {"name": "Open Site in New Tab"}, "fold2-key2": {"name": "Open Site in Split Tab"}, "fold2-key3": {"name": "Copy URL"}}},';
            }
            if (elementMouseIsOver.closest('img')) {
              all_array += '"Image-Fold": {"name": "Image","icon": "fa-picture-o","items": {"fold1-key1": {"name":"Download Image"},"fold1-key2": {"name": "Copy Image Location"},"fold1-key3": {"name": "Go To Image"}}},';
            }
            all_array += '"copy": {"name": "Copy","icon": "copy"},"paste": {"name": "Paste","icon": "paste"},"edit": {"name": "Edit HTML","icon": "fa-code"}}';
            return JSON.parse(all_array);
          }
        
          // setup context menu
          $.contextMenu({
            selector: 'body',
            build: function($trigger, e) {
              return {
                callback: function(key, options) {
                  var m = "clicked: " + key;
                  console.log(m);
                },
                items: createSomeMenu()
              };
            }
          });
        });
        

        【讨论】:

          【解决方案8】:

          简单的一个

          1. 右键单击文档中的任意位置时显示上下文菜单
          2. 在上下文菜单中单击时避免上下文菜单隐藏
          3. 按下鼠标左键时关闭上下文菜单

          注意: 不要使用 display:none 而是使用 opacity 来隐藏和显示

          var menu= document.querySelector('.context_menu');
          document.addEventListener("contextmenu", function(e) {      
                      e.preventDefault();  
                      menu.style.position = 'absolute';
                      menu.style.left = e.pageX + 'px';
                      menu.style.top = e.pageY + 'px';        
                       menu.style.opacity = 1;
                  });
                 
            document.addEventListener("click", function(e){
            if(e.target.closest('.context_menu'))
            return;
                menu.style.opacity = 0;
            });
          .context_menu{
          
          width:70px;
          background:lightgrey;
          padding:5px;
           opacity :0;
          }
          .context_menu div{
          margin:5px;
          background:grey;
          
          }
          .context_menu div:hover{
          margin:5px;
          background:red;
             cursor:pointer;
          
          }
          <div class="context_menu">
          <div>menu 1</div>
          <div>menu 2</div>
          </div>

          额外的CSS

          var menu= document.querySelector('.context_menu');
          document.addEventListener("contextmenu", function(e) {      
                      e.preventDefault();  
                      menu.style.position = 'absolute';
                      menu.style.left = e.pageX + 'px';
                      menu.style.top = e.pageY + 'px';        
                       menu.style.opacity = 1;
                  });
                 
            document.addEventListener("click", function(e){
            if(e.target.closest('.context_menu'))
            return;
                menu.style.opacity = 0;
            });
          .context_menu{
          
          width:120px;
          background:white;
          border:1px solid lightgrey;
          
           opacity :0;
          }
          .context_menu div{
          padding:5px;
          padding-left:15px;
          margin:5px 2px;
          border-bottom:1px solid lightgrey;
          }
          .context_menu div:last-child {
          border:none;
          }
          .context_menu div:hover{
          
          background:lightgrey;
             cursor:pointer;
          
          }
          <div class="context_menu">
          <div>menu 1</div>
          <div>menu 2</div>
          <div>menu 3</div>
          <div>menu 4</div>
          </div>

          【讨论】:

            【解决方案9】:

            我使用 Bootstrap 实现了一个很好且简单的实现,如下所示。

            <select class="custom-select" id="list" multiple></select>
            
            <div class="dropdown-menu" id="menu-right-click" style=>
                <h6 class="dropdown-header">Actions</h6>
                <a class="dropdown-item" href="" onclick="option1();">Option 1</a>
                <a class="dropdown-item" href="" onclick="option2();">Option 2</a>
            </div>
            
            <script>
                $("#menu-right-click").hide();
            
                $(document).on("contextmenu", "#list", function (e) {
                    $("#menu-right-click")
                        .css({
                            position: 'absolute',
                            left: e.pageX,
                            top: e.pageY,
                            display: 'block'
                        })
                    return false;
                });
            
                function option1() {
                    // something you want...
                    $("#menu-right-click").hide();
                }
            
                function option2() {
                    // something else 
                    $("#menu-right-click").hide();
                }
            </script>
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2010-10-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-04-07
              • 1970-01-01
              • 1970-01-01
              • 2016-02-04
              相关资源
              最近更新 更多