我尝试使用触发事件。 如果我用我的手独立触发事件,我没有问题,事件args满足我需要的所有filds。 如果我使用jquery trigger()都可以,但事件args几乎没有任何效果。
<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
答案 0 :(得分:0)
这是正确的行为,因为缺少的属性取决于用户操作,或者引用触发事件的原始用户操作,如果通过jQuery触发事件,这些操作显然是未定义的。
您的期望是什么?如果您将这些值视为自动填充,则不能,因为它们需要一个条件。如果您知道事件中您想要的值,或者您可以在tirggering事件时指定它,请以这种方式传递它们:
var event = jQuery.Event("drag");
event.missingproperty = "myvalue";
event.anothermissingproperty = "anothervalue";
$("selector").trigger(event);
答案 1 :(得分:0)
出于安全考虑,当您使用javascript触发事件时,它的注册方式与用户触发事件的方式不同。您会在输出中注意到
isTrigger: true
自己触发事件将始终与用户不同。