javascript - 为什么在使用 jQuery trigger() 调用时事件参数没有值?

标签 javascript jquery jquery-events hammer.js eventtrigger

我尝试使用触发事件。 如果我用手独立触发事件,我没有问题,事件参数包含我需要的所有字段。 如果我使用 jQuery trigger() 一切正常,但事件参数几乎没有。

<div id="dragDiv">
    <button id='dragButton' >tap</button>
</div>

$("#dragButton")
   .hammer({
        // options...
   })
   .bind("drag", doCall);

function doCall(ev){
    console.log(ev);
}

$('#dragButton').trigger("drag");

结果

v.Event {type: "drag", timeStamp: 1357286124612, jQuery18306904058358632028: true, isTrigger: true, exclusive: undefined…}
currentTarget: <button>
data: null
delegateTarget: <button>
exclusive: undefined
handleObj: Object
isTrigger: true
jQuery18306904058358632028: true
namespace: ""
namespace_re: null
result: undefined
target: <button>
timeStamp: 1357286124612
type: "drag"
__proto__: Object

但我需要:

v.Event {type: "drag", originalEvent: MouseEvent, position: Object, direction: "right", distance: 22.825424421026653…}
angle: -28.810793742973058
currentTarget: <button>
data: null
delegateTarget: <button>
direction: "right"
distance: 22.825424421026653
distanceX: 20
distanceY: -11
exclusive: undefined
handleObj: Object
isTrigger: true
jQuery18306904058358632028: true
namespace: ""
namespace_re: null
originalEvent: MouseEvent
position: Object
result: undefined
target: <button>
timeStamp: 1357286139160
touches: Array[1]
type: "drag"
__proto__: Object

最佳答案

这是正确的行为,因为缺少的属性依赖于用户操作,或者引用触发事件的原始用户操作,在通过 jQuery 触发事件的情况下,这些属性显然是未定义的。

您的期望是什么?如果您希望这些值自动填充,则它们不能,因为它们需要一个条件。如果您知道事件中需要什么值,或者您可以在触发事件时指定它,请以这种方式传递它们:

var event = jQuery.Event("drag");
event.missingproperty = "myvalue";
event.anothermissingproperty = "anothervalue";
$("selector").trigger(event);

关于javascript - 为什么在使用 jQuery trigger() 调用时事件参数没有值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14153330/

相关文章:

javascript - 浏览器后退按钮处理

javascript - 如何检查 'string1'是否在 'string1, string2, string3, .. stringn'中

jquery - 如何在 jQuery DataTable 中搜索精确的字符串?

jquery - 当复选框被禁用时添加事件处理程序

javascript - 替换 typescript 中字符串中的所有字符实例?

javascript - 我可以在 DOM addEventListener 中使用 Angular2 服务吗?

javascript - Jquery到服务器问题

javascript - 检测 jqGrid 单元格中的复选框事件

jquery - 当 Bootstrap 工具提示处于事件状态时,会阻止触发 jquery 事件

javascript - AngularJS - 我们可以移除/删除模块吗?