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 坐标的上下文菜单。

4

1 回答 1

1

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

$(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);
        }
    }
});​

演示:http: //jsfiddle.net/x4Bmw/2/

于 2012-11-21T11:32:29.153 回答