2013-08-23 95 views
0

我正在構建一個web應用程序(我是javascript新手),當我點擊某個附加了.click監聽器的jquery時,它拒絕執行任何操作。另外,它不會動畫。我做錯了什麼,而且不能確定什麼。Jquery無法識別點擊

代碼:

function loadTabBar() 
{ 
    person = false; 
    sale = false; 
    current = false; 
    wine = false; 
    if(!person && !sale && !current && !wine) 
    { 
     justOpened(); 
    } 

    function useTabBar(){ 

    $('#PersonDiv').click(function() 
    { 
     alert('hi') 
     activatePerson(); 
    }); 
    $('#Current').click(function() 
      { 
       activateCurrent(); 
      }); 
    $('#Sale').click(function() 
      { 
       activateSale(); 
      }); 
    $('#Wine').click(function() 
      { 
       activateWine(); 
      }); 

    function activatePerson() 
    { 
     if(!person) 
     { 
      var newImg="#Person"; 
      if(sale) 
      { 
       var oldImg="#Sale" 
       changeImg(oldImg, newImg); 
      } 
      if(wine) 
      { 
       var oldImg="#Sale" 
       changeImg(oldImg, newImg); 
      } 
      if(current) 
      { 
       var oldImg="#Sale" 
       changeImg(oldImg, newImg); 
      } 
      person = true; 
      current = false; 
      wine = false; 
      sale = false; 

     } 
    } 
    function activateSale() 
    { 
     if(!sale) 
     { 
      var newImg="#Sale" 
      if(person) 
      { 

       var oldImg="#Person" 
       changeImg(oldImg, newImg); 
      } 
      if(wine) 
      { 
       var oldImg="#Wine" 
       changeImg(oldImg, newImg); 
      } 
      if(current) 
      { 
       var oldImg="#Current" 
       changeImg(oldImg, newImg); 
      } 
      person = false; 
      current = false; 
      wine = false; 
      sale = true; 
     } 
    } 
    function activateWine() 
    { 
     if(!wine) 
     { 
      var NewImg = "#Wine" 
      if(sale) 
      { 
       var oldImg="#Sale" 
       changeImg(oldImg, newImg); 
      } 
      if(person) 
      { 
       var oldImg="#Person" 
       changeImg(oldImg, newImg); 
      } 
      if(current) 
      { 
       var oldImg="#Current" 
       changeImg(oldImg, newImg); 
      } 
      person = false; 
      current = false; 
      wine = true; 
      sale = false; 
     } 
    } 
    function activateCurrent() 
    { 
     var newImg = "#Current"; 
     if(!current) 
     { 
      if(sale) 
      { 
       var oldImg="#Sale" 
       changeImg(oldImg, newImg); 
      } 
      if(wine) 
      { 
       var oldImg="#Wine" 
       changeImg(oldImg, newImg); 
      } 
      if(person) 
      { 
       var oldImg="#Person" 
       changeImg(oldImg, newImg); 
      } 
      person = false; 
      current = true; 
      wine = false; 
      sale = false; 
     } 
    } 
    function changeImg(oldImg, newImg) 
    { 
      $(oldImg).fadeOut('fast', function() 
      { 
       $(this).attr('src', ('http://www.jagspcmagic.com/' + oldImg.substring(1) + '1.png'), function(){ 
        if(this.complete) $(this.fadeIn('fast')); 
       }); 
      })        
      $(newImg).fadeOut('fast', function() 
      { 
       $(this).attr('src', ('http://www.jagspcmagic.com/' + oldImg.substring(1) + '2.png'), function(){ 
        if(this.complete) $(this.fadeIn('fast')); 
       }); 
      }) 

    } 
}function justOpened() 
{ 
    $('#Person').fadeOut('fast', function() 
      { 
       $('#Person').attr('src', 'http://www.jagspcmagic.com/Person2.png', function(){ 
        $(this.fadeIn('fast')); 
       }); 
      }) 
    person = true; 
    useTabBar(); 
}} 

的jsfiddle:(不介意可怕的圖形,我不想上傳我實際的,因爲他們還沒有版權http://jsfiddle.net/hFBMB/

+3

從哪裏調用loadTabBar()?你的小提琴不叫它,所以沒有事件處理程序正在創建。這是你期望的行爲:http://jsfiddle.net/hFBMB/2/? –

+0

何時何地調用這些函數? –

+0

你應該把你想要的每個功能到'$(函數(){});' –

回答

2

你將不得不調用loadTabBar()或代替,你可以把你的代碼,而不是現成的loadTabBar()。

$(document).ready(function(){ 

//code goes here 

}); 
+1

呀,具體而言,移動到一切文件準備好,直到你聲明所有這些功能。這些應該在文檔準備之外。 – SeanKendle

1

你永遠不會打電話給loadTabBar()。我不確定你爲什麼把所有東西都包裹在裏面?

1

你必須打電話給你的loadTabBar()功能,然後才能使用任何內部的東西。嘗試調用你的函數,那麼點擊應該工作...