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

4
我想知道是否有可能向传递给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个回答

3
你可以创建自己的事件对象,然后使用trigger()函数发送它:
var e = new jQuery.Event("mousedown");
e.pageX = 'fake value';
currentObj.trigger(e);

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);
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接