2015-04-15 23 views
0

如果有人可以幫助我這個英特爾XDK的init-app.js功能 - 裏面的英特爾XDK,有一個事件偵聽器,像下面的代碼的功能。使用jQuery在事件處理

app.initEvents = function() 
{ 
    //... 
    //... 
    var el, evt ; 

    if(navigator.msPointerEnabled || !('ontouchend' in window)) // if on Win 8 machine or no touch 
     evt = "click" ;            // let touch become a click event 
    else               // else, assume touch events available 
     evt = "touchend" ;           // not optimum, but works 

    el.addEventListener(evt, myEventHandler, false) ; 

    //el.evt(myEventHandler) ; 
} 

這工作完美,但我想使用jQuery事件綁定。因此,而不是寫el.addEventListener(evt, myEventHandler, false)我願意把它寫這樣el.evt(myEventHandler)

這不起作用。但是,如果我使用click而不是evt,它可以工作。我看到evt表示「點擊」作爲一個字符串。所以,我很困惑,因爲「點擊」和「touchend」字符串,並且懷疑是否在我上面的jQuery中編寫點擊,可以用於觸摸屏。

任何幫助將不勝感激。

回答

2

只是使用jQuery的on方法綁定事件。這將允許您使用變量作爲事件名稱。

$(el).on(evt, myEventHandler); 

我想說,你可以用括號標記,像這樣:

$(el)[evt](myEventHandler); 

但是這是不好的,如果你用這種方式,你應該感覺不好。

+2

注意,括號標記將僅針對其中的jQuery有一個別名功能,事件名稱的工作。 (即,jQuery具有'$ .fn.click',但沒有'$ .fn.myCustomEvent')。 '.on'方法適用於所有應用程序。 – JAAulde

+0

@JAAulde優點,jQuery中的自定義事件或未定義事件不會響應括號表示法。 –