2012-11-21 151 views
1
$("#element").bind("keydown", function(e) { 
    if (e.which === 39) { //if keyboard right arrow 
     $("#element").trigger({ 
      type: 'mousedown', 
      button: 2 
     }).trigger({ 
      type: 'mouseup' 
     }); 

     $("#element").bind('mousedown', function(ev) { 
      if (ev.which === 2) { 
       //call method - I need pageX and pageY coordinates 
       //methods.show.apply($this, [ev.pageX, ev.pageY, options.showAnimation]); 
       alert("called"); 
      } 
     }); 

    } 
});​ 

我所试图做的是: 按键盘右箭头键,这则模拟鼠标右键点击触发,现在我需要的是一个处理程序,以便我可以启动需要X & Y坐标的我的上下文菜单。调用从键盘右键单击鼠标右箭头的keydown

回答

1

以下代码将记住#element数据中的鼠标光标位置。然后,它会使用存储的坐标​​处理:

$(document).on({ 
    keydown: function(e) { 
     if (e.which === 39) { 
      var $el = $("#element"), 
       pos = $el.data("pos"); 

      $el.trigger({ 
       type: 'mousedown', 
       which: 3, 
       pageX: pos[0] || 0, 
       pageY: pos[1] || 0 
      }); 
     } 
    }, 
    mousemove: function(e) { 
     $("#element").data("pos", [e.pageX, e.pageY]); 
    } 
}); 

$("#element").on({ 
    mousedown: function(e) { 
     if (e.which === 3) { 
      alert(e.pageX + "/" + e.pageY); 
     } 
    } 
});​ 

DEMO:http://jsfiddle.net/x4Bmw/2/

+1

有没有办法让pageX属性和pageY随着鼠标的点击,通常会得到,而不是通过他们跨越 – chugh97

+0

@ chugh97祢更新后的版本。 – VisioN

+0

+1但更好的办法是将mousemove事件处理为#element,而不是文档。 –