是否可以动态修改事件对象? jQuery trigger()/ bind()

时间:2011-03-14 20:04:44

标签: javascript jquery

我想知道是否可以向传递给bind()事件处理函数的事件对象添加属性。我有一段代码,这就是“mousedown”。我想明确地触发这个事件。问题是bind()处理程序需要一些鼠标触发事件时提供的事件属性;即'pageX'和'pageY'。

我知道我可以将其他参数作为数组传递给Trigger(),但我宁愿不更改bind()代码。这可能是不可能的。

我想触发下面的处理程序并'伪造'pageX。可以这样做吗?

 currentObj.bind("mousedown", function(e) {
                var handleElement = currentObj.find(".HwSliderHandle");
                var offsetMultiplier = calculateOffsetMultiplier();
                var newPosition = Math.round(e.pageX/offsetMultiplier) - sliderInfo.contextOffset.left;
                moveHandleTo(handleElement, newPosition);                    
            });

2 个答案:

答案 0 :(得分:3)

您可以创建自己的event object,然后使用trigger()功能发送它:

var e = new jQuery.Event("mousedown");
e.pageX = 'fake value';
currentObj.trigger(e);

答案 1 :(得分:0)

这是一种方法:

    $(document).ready(DocReady);

    function DocReady()
    {
        $("#test").bind("mousedown", mouseDown);
    }
    function mouseDown(e)
    {
       alert("X: " + e.pageX + ", Y: " + e.pageY);      
    }

    function fakeIt()
    {
       var e = { pageX: 40, pageY: 50 };
       mouseDown(e);
    }