【问题标题】:Right click keeps propagating in Firefox右键单击在 Firefox 中不断传播
【发布时间】:2012-09-14 19:18:40
【问题描述】:

我刚刚注意到一些不寻常的事情。这就是我想要完成的:

  • 我希望在单击链接时显示 div

  • 我希望当我单击文档中的其他位置时 div 消失

  • 我不希望它在单击 div 本身时消失

类似这样的:

http://jsfiddle.net/XPmyF/

JS:

(function() {
    var box = $('#box');
    $(document).on('click', function() {
        if (box.css('display') == 'block') {
            box.css('display', 'none');
        }
    });
    $('#start').on('click', function(e) {
        box.css({
            'text': 'Box',
            'position': 'absolute',
            'top': '50px',
            'left': '0',
            'background': '#EEE',
            'border': '1px solid #555',
            'width': '200px',
            'height': '50px',
            'display': 'block'
        });
        e.stopPropagation();
    });

    box.on('click', function(e) {
        e.stopPropagation();
    });
})();​

那个小提琴工作得很好,但是当我在 Firefox (15.0.1) 中测试它时,如果你右键单击 div,它就会消失,这不是我正在寻找的行为。似乎 stopPropagation() 适用于单击,但不适用于 Firefox 中的右键单击。 Chrome 会阻止右键单击传播到文档。

我该如何解决?

谢谢

【问题讨论】:

    标签: javascript firefox right-click stoppropagation


    【解决方案1】:

    使用 event.which 方法来检测点击了哪个按钮。这是jsfiddle 中的一个示例。

    $(document).on('click', function(event) {
        if (event.which == 1 && box.css('display') == 'block') {
            box.css('display', 'none');
        }
    });
    

    【讨论】:

      【解决方案2】:

      编辑到实际工作...

      很抱歉,活动没有按预期进行。您可以通过鼠标悬停来处理它。

      (function() {
      var box = $('#box');
      var clicky = true;
      $(document).on('click', function() {
          if (box.css('display') == 'block' && clicky) {
              box.css('display', 'none');
          }
      });
      $('#start').on('click', function(e) {
          box.css({
              'text': 'Box',
              'position': 'absolute',
              'top': '50px',
              'left': '0',
              'background': '#EEE',
              'border': '1px solid #555',
              'width': '200px',
              'height': '50px',
              'display': 'block'
          });
          e.stopPropagation();
      });
      box.mouseenter(function(e) {
          clicky = false;
      });    
      box.mouseout(function(e) {
          clicky = true;
      });
      
      })();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多