2013-01-04 15 views
2

我嘗試使用觸發事件。 如果我用我的雙手獨立觸發事件,我沒有問題和事件參數滿足我需要的所有文件。 如果我使用jQuery觸發器()所有的作品,但事件參數幾乎沒有得到。爲什麼事件參數在使用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 
+4

就是這樣。例如,如果以編程方式觸發單擊事件,那麼鼠標實際上並不具有特定位置,因此事件對象不包含鼠標座標。我認爲你不能在這裏做很多事情。在這種情況下它是相似的。你沒有向任何方向拖動任何元素,因此處理程序確實不知道用哪個值來填充事件對象。 –

回答

0

這是正確的行爲,因爲缺少的屬性是用戶行爲相關的,或者指的是觸發事件的原始用戶行爲,在通過jQuery觸發事件的情況下,這些顯然未定義。

您的期望是什麼?如果您將這些值顯示爲自動填充,則它們不能,因爲它們需要一個標準。如果你知道你在事件想要什麼樣的價值觀,或者你可以在tirggering事件時指定,通過他們這樣說:

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

爲了安全起見,當您觸發與事件JavaScript的註冊方式與用戶觸發事件的方式不同。你會注意到在你的輸出中有一個

isTrigger: true 

自己觸發事件將總是不同於當用戶做。

相關問題