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 に答える