1

我目前正在使用这个:

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 行定义 - 这是我的应用程序,所以这并不能告诉我太多)。切换回第一个语法,一切正常。

问题
是否可以动态设置我要绑定的事件?如果是这样,在这种情况下正确的语法是什么?

谢谢!

4

3 回答 3

1

这是怎么回事

function handler( event ) {
    if ( full == false ) {
        self.hideAllPanels("7");
    }
}

$(window).on('orientationchange', handler );

if ( !$.support.touch ) {
    $(window).on( 'resize', handler);
}

对我来说看起来更干净

于 2012-10-28T14:36:43.760 回答
1

这未经测试,但您可以通过以下方式进行测试:

function handler(event) {
    if ( full == false ) {
        self.hideAllPanels("7");
    }
}
$(window).on('orientationchange', handler);
if ( ! $.support.touch ) {
    $(window).on('resize', handler);
}
于 2012-10-28T14:37:29.687 回答
1

可以最小化代码重复做这样的事情:

 var events = $.support.touch ? 'orientationchange' : 'orientationchange resize';

$(window).on(events, function(event) {
    if (full == false) {
        self.hideAllPanels("7");
    }
});
于 2012-10-28T14:37:51.467 回答