5

ここで何が起こっているのかよくわかりません。おそらく非常に明白な何かが欠落している可能性があると感じていますが、両方のステートメントが呼び出されているifelseがあります。誰かがこれに光を当てることができれば、それは素晴らしいことです。$('#' + $.address.hash()以下のコードはasualを使用しており、divがすでにロードされているかどうかを検出する必要があります 。ただし、ifイベントとelseイベントの両方が順番に発生しています。実際、elseステートメントは2回起動します...

$('#lmit_back').show(400, function() {
    if($('#' + $.address.hash() ).length == 0) {
        $('#init').load('inithandler.php', { 'address' : $.address.hash() }, function() {
            $('#' + $.address.hash()).fadeIn(1000, function() {
                $('#remn').load('pagehandler.php',{ 'address' : $.address.hash() });
            });
        });
    }  
    else {
        alert('hey');
    }
});

これがすべてのコードです..address.changeと関係がない限り、2回実行される原因を実際に理解することはできません。

if(($ .address.hash()=='')){$ .address.hash('home');}

    $('#lmit_back').click(function() {

            $.address.hash('home');

    });


    $.address.change( function() {  



        if (!($.address.hash() == 'home')) 
        {



        var exception = '.' + $('[href="#' + $.address.hash() + '"]').parent().attr('class');


            $('#left_menu_bar li:not(' + exception + ')').hide(300,function() {

                $(exception).show( function() {

                    $('#left_menu_bar').animate({ width:'100%'},400, function() { 

                        $('#lmit_back').show(400, function() {


                                if ($('#' + $.address.hash() ).length === 0)
                                {

                                    $('#init').load('inithandler.php', { 'address' : $.address.hash() } , function() { 

                                        $('#' + $.address.hash()).fadeIn(1000, function() {

                                            $('#remn').load('pagehandler.php',{ 'address' : $.address.hash() });

                                        });



                                    });

                                }
                                else
                                {

                                alert('nigs');

                                }

                        });

                    });

                });

            });



        }
        else
        {




            $('#left_menu_bar').animate({ width:'251px'}, function() { 

                $('#left_menu_bar li').show( function() {

                    $('#lmit_back').hide();

                });

            });



            $('#left_menu_bar').css('width','251px');



        }


    }); 
4

3 に答える 3

9

ここでの問題は、貼り付けたコードに起因するものではありません。コードが複数回実行され、複数のブランチにヒットする唯一の方法は、コードが複数回実行されている場合です。これが複数回呼び出される可能性のある場所については、周囲のコードを参照してください。

于 2012-09-18T04:02:28.953 に答える
1

同様の問題に直面しましたが、条件がtrueの場合にデバッグ中に、elseブロックにも入りました。後で、アラートとconsole.logをif/elseブロックに追加して実現しました。elseは実際には実行されていませんでしたが、デバッグ中はelseのように見えました。

したがって、同じ問題に直面している人は、alertまたはを追加して確認してconsole.logください。

于 2016-06-10T13:11:57.233 に答える
0

ステップバイステップでデバッグしたときに、同じ動作が見られました。結局、複数のクリックイベントを添付していたため、コードがn回起動しました。

于 2013-09-17T00:45:58.523 に答える