2

ページの読み込み中に、jqm から 2 つのアラートを受け取りました。私のコードに問題はありますか?

私のコード:

 $(document).bind('pageinit', function () {

alert('hi') // alerts 2 times...

        if(navigator.platform.indexOf("iPhone") != -1){
           $('div.video-holder span ').hide();
        }

    $('a[href="#"], a.disabled').bind('click touchstart',function (e) {
       e.preventDefault();
    } );

    if($(' #task-1,#task-2').length){
        candidateAccordion($('.candidate-list'));    
    }
    if($('#task-3').length || $('#task-4').length){
        taskSelector($('#task-3,#task-4'));//only for tast list selection
    }
    if($('video').length){
        $('.video-holder').each(function(num,element) {
            videoProcess($(element));
        });
    }
    if($('#task1-candSelected').length){
        candidateUpdate($('#task1-candSelected'));
    }

    if($('#task2-results').length){
        task2ResultProcess();
    }

    if($('#task3-results').length){
        task3ResultProcess();
    }
    if($('#task4-results').length){
        task4ResultProcess();
    }
    if($('#scoredUptoFinal').length){
        scoredUptoFinal();
    }

} )
4

3 に答える 3

1

アラートが 2 回発生すると、イベントは 2 回トリガーされます。

event関数パラメーターに追加して、次のように慰めるのはどうですか:

$(document).bind('pageinit', function (event) {

   console.log( event )

   ...

これにより、何が起こっているかについての情報が得られるはずです。

pageinitSO (ここのように)に関する質問がたくさんあるので、解決策も教えてくれるかもしれません。

また、複数のpageinitイベントが発生するという問題もありました。私は通常lock-up、最初のトリガーの後のページに対してこれを行っています:

$(document).bind('pageinit', function() {
    if ( !$('html').hasClass("mv-on") ){
        $('html').addClass("mv-on");
        // trigger my stuff
        }
    });

このようにして、pageinit はONCEDOM 全体に対して実行されます。pageinitイベントが発生したページにクラスまたは属性を追加することで、ページをロックするためにも使用できます。

また、pageinitバインディング/ハンドラーのイベントが正しいことを確認してください。pageinitバインドしようとしたクラスがまだ DOM に挿入されていないときに、クラスごとに要素にバインドするなど、しばしば on に設定しようとしました。pagebeforeshowそうすれば、すべてのバックグラウンド処理が完了したと確信できるので、通常は今を使用します。しかし、好みの問題です。

于 2012-10-25T08:31:13.100 に答える
0

複数ページのテンプレートはありますか? pages同じIDを使用している2つがある可能性があります。JQM は最初に発生したページをロードするため、2 回ロードされます。

この JQM git issue requestで指摘された問題にも関連している可能性があります。

このチャートも見てください。JQM によって起動されるイベントの順序を理解するのに非常に役立ちます。

于 2012-10-25T08:02:30.493 に答える
-1

pageinitイベントにバインドしないdocumentでください。表示されている1つのページだけで試してみてください。

例えば、 $("#yourpageId").bind('pageinit', function () {...}

于 2012-10-25T08:13:40.967 に答える