2011-03-14 40 views
4

我想知道是否有可能将属性添加到传递给bind()事件处理函数的事件对象。我有一段代码,它绑定到“mousedown”。我想明确触发这个事件。问题是bind()处理程序需要一些鼠标触发事件时提供的事件属性;即'pageX'和'pageY'。是否可以动态修改事件对象? jQuery触发器()/绑定()

我知道我可以将其他参数作为数组传递给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);      
      }); 

回答

3

您可以创建自己的event object然后使用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); 
    } 
相关问题