1

iPad ios 5.1 の場合、https: //s140452.gridserver.com/property/4123 (横表示)

「詳細を表示」ボタンをクリックすると、iPad での実行に約 15 秒かかります。モバイルサファリがクラッシュすることがあります。クロムまたはファイアフォックスで即座に発生します。

私は何か間違ったことをしていますか?

$j('#locations').delegate('.sidebar-expand', 'click', function(){
    var $me = $j(this),
        $locations = $j('#locations');

    if($locations.hasClass('expand')) {
        $locations.removeClass('expand');
    } else {
        $locations.addClass('expand');
    }
});
4

1 に答える 1

2

まず、on代わりに を使用しますdelegate。1.7 以降で導入されたマイナーなパフォーマンスの向上がありますが、より重要なことは、それがベスト プラクティスになりつつあることです。同じ構文:

$j('#locations').on('.sidebar-expand', 'click', function(){...

第二に、iOS Safari JS は非常に遅いです。笑えるほど遅い - 髪を引っ張るのが遅い。私の iPad 1 safari JS は、私の PC の Chrome よりも 38 倍遅くベンチマークされました。jQuery にセレクターのトラバースとマッチングを強制するあらゆるタイプのイベント委譲は、iOS モバイル Web でのアプリケーションの速度を大幅に低下させます。

とは言っても、PhoneGap を使って実際のアプリに変換すれば、iOS サファリ JS エンジンに依存しないので問題なく動作するはずです。

簡単に言えば、必要がない限り、iOS で将来性のあるイベント オブザーバーを使用しないでください。.sidebar-expandDOM の準備ができた後にノードを追加しない場合は、代わりにこれを使用してください。

$j('.sidebar-expand').on('click', function(){...
于 2012-05-01T16:29:36.227 に答える