2013-08-22 97 views
0

我有问题用jQuery弹出页脚。我的代码是工作,但唯一的问题是它不起作用的第一次点击按钮,它通过第二次单击按钮工作?任何想法? 这里是我的代码:用jQuery在第一次点击的网站上弹出页脚?

<script type="text/javascript"> 

    jQuery(function($) { 

     var open = false; 

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

      if(open === false) { 

       $('#footerSlideContainer').animate({ height: '0' }); 

       $(this).css('backgroundPosition', 'top left'); 

       open = true; 

      } else { 

       $('#footerSlideContainer').animate({ height: '150px' }); 

       $(this).css('backgroundPosition', 'bottom left'); 

       open = false; 

      } 

     });   

    }); 

</script> 
+0

应该'VAR开放= true;'be'var open = false;'? –

+0

备注:对于'if'语句,如果var是一个bool,你可以简单地说'if(open)'为真,'if(!open)'为假 – Dom

+0

oops。如果它是假的,也有同样的问题。它通过第二次点击按钮来工作。我想用第一个点击页脚弹出...你认为它与CSS有关吗? – user2708492

回答

0

我会浓缩成这样:

(function($){ 
    window.opened=false; 
    $('#footerSlideButton').on('click', function() { 
     $('#footerSlideContainer').animate({ height : opened ? '0' : '150px'}); 
     $(this).css('backgroundPosition', opened ? 'top left' : 'bottom left'); 
     opened = !opened; 
    }); 
})(jQuery); 

你也可以存储在元数据开放状态:

(function($){ 
    $('#footerSlideButton').on('click', function() { 
     $('#footerSlideContainer').animate({ height : $(this).data('open') ? '0' : '150px'}); 
     $(this).css('backgroundPosition', $(this).data('open') ? 'top left' : 'bottom left'); 
     $(this).data('open', !$(this).data('open')); 
    }); 
})(jQuery); 
+0

你为什么在函数内部使用'window.open'?我不会建议。它*应该*是'var open = false;'P.S. https://developer.mozilla.org/en-US/docs/Web/API/window.open –

+0

我同意你的说法windows.open不起作用。上面的代码都不起作用! – user2708492

+0

是的,window.open是我的一个很大的疏忽。 –

相关问题