2012-09-18 3 views
2

여기에 무슨 일이 일어나고 있는지 잘 모르겠다. 분명히 분명히 드러난 것 같은 느낌이 들지만, 두 문장 모두 호출되는 경우가 있습니다. . 누군가가 이것에 대해 밝힐 수 있다면 그것은 위대 할 것입니다. 아래 코드는 실제를 사용하며 div $('#' + $.address.hash()이 이미로드되었는지 여부를 감지해야합니다. 그러나 if와 else 이벤트 모두 순서대로 실행됩니다. 사실 두 번 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하는 함께 할 수있는 뭔가가하지 않는 한이 두 번 실행하는 원인이 될 수 무엇을 작동하지 않을 수 있습니다 나는 익숙하지 않은 메신저가되고 싶습니다.

(($ .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

흠 좋습니다. 감사합니다. 주소가 실제 주소와 관련 될 수 있다는 느낌이 들었습니다. 병이 더 자세히 보입니다. – Melbourne2991

0

나는 같은 동작을 보았습니다. 단계별로 디버깅을했을 때 작동했습니다. 결국 코드가 n 번 발생하도록 여러 번의 클릭 이벤트를 첨부하고있었습니다.

1

나는 조건이 맞으면 디버깅하는 동안 비슷한 문제에 직면했다. 나중에 나는 경보와 console.log를 추가했다. 블록의 & 실현되었지만, 실제로는 실행되지 않았지만 디버깅 중에는 다른 것처럼 보였다.

따라서 동일한 문제가있는 사람은 alert 또는 console.log을 추가하여 인증하십시오.