【发布时间】:2012-10-18 01:24:40
【问题描述】:
我目前正在使用这个:
if ( $.support.touch == true ) {
$(window).on('orientationchange', function(event){
if ( full == false ) {
self.hideAllPanels("7");
}
});
} else {
$(window).on('orientationchange resize', function(event){
if ( full == false ) {
self.hideAllPanels("7");
}
});
}
因为当我不需要它们时,我会在触摸设备上触发很多调整大小事件。
我还尝试了以下语法:
$(window).on( ( 'orientationchange'+ ( $.support.touch ? '': ' resize') ), function(event){
...
});
但这会在 Firefox 中产生错误(app.start() 未在第 1 行定义 - 这是我的应用程序,所以这并不能告诉我太多)。切换回第一个语法,一切又正常了。
问题:
是否可以动态设置我要绑定的事件?如果是这样,在这种情况下正确的语法是什么?
谢谢!
【问题讨论】:
-
“动态设置事件”是什么意思?
-
类似:
case A: bind to orientationchange resize | case B: bind to orientationchange,所以我正在寻找在绑定语句中执行此操作的语法 = 要么在那里有 if-else,要么传递一个带有适用事件的变量。我试过(见上文),但我遇到了奇怪的错误,所以我想知道这是否可能 -
您似乎有一组额外的括号可能会导致问题:
$(window).on( 'orientationchange'+ ( $.support.touch ? '': ' resize') -
您的代码看起来不错。试着让它更干净一点:
var event = 'orientationchange' + ($.support.touch ? '' : ' resize'); $(window).on(event, function() { ... });。也许这有助于发现问题。 -
@MattWhipple 括号不会导致问题。例如
("test" + (true ? "" : " rest"))是一个有效的代码。
标签: javascript jquery events dynamic event-handling