2013-08-23 97 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()功能,然后才能使用任何内部的东西。尝试调用你的函数,那么点击应该工作...