2012-09-18 41 views
2

我不太確定這裏發生了什麼事情,並且覺得我可能會錯過可能非常明顯的事情,但是我有一個如果其他語句被調用。如果有人能夠闡明這一點,這將是偉大的。下面的代碼使用asual,應該檢測div $('#' + $.address.hash()是否已經加載。然而,如果和其他事件都按順序被解僱了。事實上else語句閃光兩次......Javascript/jQuery,if和else語句都正在執行

$('#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'); 
    } 
}); 

這裏是所有的code..I不能真正找出什麼可能導致它執行兩次,除非有事情做與address.change這我不像我想要的那樣熟悉。

IF(($ .address.hash()== '')){$ .address.hash( '家');}

$('#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'); 



     } 


    }); 
+0

嘗試用'==='替換'=='並檢查? –

+4

將您的代碼放在http://jsfiddle.net/上,可以幫助人們極大地回答您的問題。 – valentinas

+5

我懷疑你正在執行代碼不止一次。 –

回答

7

這裏的問題不是從代碼產生的你已粘貼。代碼可以多次運行並擊中多個分支的唯一方式是它是否被多次執行。查看周圍的代碼,查找可以多次調用的地方。

+0

嗯,好吧,謝謝,我有一種感覺,它可能與asuals address.change有關。 – Melbourne2991

0

我看到相同的行爲,當我一步步調試它的工作。結果是我附加了多個點擊事件,因此代碼被解僱了n次。

1

我面臨類似的問題,而調試時,如果條件是真的它也去了其他塊。後來我在if/else模塊的&實現中加入了alert和console.log,否則實際上並沒有被執行,但在調試時它看起來像是在其他地方。

因此,誰面臨相同的問題,通過添加alertconsole.log驗證。