【问题标题】:Is it possible to dynamcally modify an event object? jQuery trigger() / bind()是否可以动态修改事件对象? jQuery 触发器()/绑定()
【发布时间】:2011-03-14 20:04:43
【问题描述】:

我想知道是否可以向传递给 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);                    
            });

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      这是一种方法:

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

      【讨论】:

        猜你喜欢
        • 2012-11-08
        • 2012-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多