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 に答える