Javascript 在“英特尔xdk init-app.js”函数中使用jQuery进行事件处理

Javascript 在“英特尔xdk init-app.js”函数中使用jQuery进行事件处理,javascript,jquery,event-handling,intel-xdk,Javascript,Jquery,Event Handling,Intel Xdk,如果有人能帮我的话- 在intel xdk内部,有一个用于事件侦听器的函数,类似于以下代码 app.initEvents = function() { //... //... var el, evt ; if( navigator.msPointerEnabled || !('ontouchend' in window)) // if on Win 8 machine or no touch evt = "click" ;

如果有人能帮我的话- 在intel xdk内部,有一个用于事件侦听器的函数,类似于以下代码

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)

这是行不通的。但是,如果我使用
单击
而不是
evt
,它会工作。我看到
evt
将“click”表示为字符串。所以,我很困惑,因为“click”和“touchend”字符串,我怀疑在我上面的jQuery中编写click是否适用于触摸屏

非常感谢您的帮助。

只需使用jQuery的方法绑定事件即可。这将允许您使用变量作为事件名称

$(el).on(evt, myEventHandler);
我想说的是,你可以使用括号符号,如下所示:

$(el)[evt](myEventHandler);

但是这很糟糕,如果使用这种方法,您应该会感觉很糟糕。

请注意,括号表示法仅适用于jQuery具有别名函数的事件名称。(也就是说,jQuery有
$.fn.click
,但没有
$.fn.myCustomEvent
)。上的
.on方法适用于所有人,应该使用。@JAAulde极好的一点是,jQuery中的自定义事件或未定义事件不会响应括号表示法。