jQuery切换功能在第一次点击时不起作用

问题描述:

我想创建一个简单的切换功能,用一个cookie来切换div show()或hide()以记住div在哪个状态。到现在为止还挺好。那么,它的作品有点。当我切换div隐藏()它隐藏,但是当我重新加载页面要切换分区显示()我必须单击按钮两次!我已经在这里读了一遍,但他们没有帮助。此外,我试图使它具有点击功能,但根本不起作用。jQuery切换功能在第一次点击时不起作用

这里北京时间代码:

jQuery().ready(function() { 

     var footeroff = jQuery.cookie('footeroff'); 
     var toggle_footer = jQuery(".toggle_footer_switch"); 

     if (footeroff == "off") { 
     jQuery("div#footer").hide(); 
     jQuery("div#wkfooter_switch").hide(); 
     toggle_footer.html("<img src='../images/other/zuklappen.png' border='0'>"); 
     }; 

     if (footeroff == "on") { 
     jQuery("div#footer").show(); 
     jQuery("div#wkfooter_switch").show(); 
     toggle_footer.html("<img src='../images/other/aufklappen.png' border='0'>"); 
     }; 

     var footer_switch = jQuery("div#footer"); 
     var toggle_footer = jQuery(".toggle_footer_switch"); 
     var toggle_switch_div = jQuery("div#toggle_switch_div"); 

     jQuery("a.toggle_footer_switch").toggle(
      function() { 
       toggle_footer.html("<img src='../images/other/zuklappen.png' border='0'>"); 
       jQuery("div#footer").fadeOut("slow"); 
       jQuery("div#wkfooter_switch").hide(); 
       jQuery.cookie("footeroff" , "off"); 
      }, 
      function() { 
       toggle_footer.html("<img src='../images/other/aufklappen.png' border='0'>"); 
       jQuery("div#footer").fadeIn("slow"); 
       jQuery("div#wkfooter_switch").show(); 
       jQuery.cookie("footeroff" , "on"); 
      } 
     ); 


    }); 

还有就是代码点击功能:

 jQuery().ready(function() { 

     var footeroff = jQuery.cookie('footeroff'); 
     var toggle_footer = jQuery(".toggle_footer_switch"); 

     if (footeroff == "off") { 
     jQuery("div#footer").hide(); 
     jQuery("div#wkfooter_switch").hide(); 
     toggle_footer.html("<img src='../images/other/zuklappen.png' border='0'>"); 
     }; 

     if (footeroff == "on") { 
     jQuery("div#footer").show(); 
     jQuery("div#wkfooter_switch").show(); 
     toggle_footer.html("<img src='../images/other/aufklappen.png' border='0'>"); 
     }; 

     var footer_switch = jQuery("div#footer"); 
     var toggle_footer = jQuery(".toggle_footer_switch"); 
     var toggle_switch_div = jQuery("div#toggle_switch_div"); 


     jQuery("a.toggle_footer_switch").click(function() { 

      if (footer_switch.is(":visible")) { 
       toggle_footer.html("<img src='../images/other/zuklappen.png' border='0'>"); 
       jQuery("div#footer").hide(); 
       jQuery("div#wkfooter_switch").hide(); 
       jQuery.cookie("footeroff" , "off"); 
      } 
      else if (footer_switch.is(":hidden")) { 
       toggle_footer.html("<img src='../images/other/aufklappen.png' border='0'>"); 
       jQuery("div#footer").show(); 
       jQuery("div#wkfooter_switch").show(); 
       jQuery.cookie("footeroff" , "on"); 
      } 

     }); 


    }); 

非常感谢您!

致以问候

+0

欢迎来到StackOverflow。由于使用'click'的代码看起来与使用'toggle'的代码完全相同,所以最好在问题中使用该空间来发布HTML代替。这将使人们能够在[jsfiddle](http://jsfiddle.net)中快速获得演示,以帮助解决您的问题。也就是说,除非你想自己设置一个演示! :) – Town 2011-06-16 09:36:16

下面的工作会是什么?

jQuery().ready(function() { 

    var footeroff = jQuery.cookie('footeroff'); 
    var toggle_footer = jQuery(".toggle_footer_switch"); 

    toggle_footer.toggle(
     function() { 
      toggle_footer.html("<img src='../images/other/zuklappen.png' border='0'>"); 
      jQuery("div#footer").fadeOut("slow"); 
      jQuery("div#wkfooter_switch").hide(); 
      jQuery.cookie("footeroff" , "off"); 
     }, 
     function() { 
      toggle_footer.html("<img src='../images/other/aufklappen.png' border='0'>"); 
      jQuery("div#footer").fadeIn("slow"); 
      jQuery("div#wkfooter_switch").show(); 
      jQuery.cookie("footeroff" , "on"); 
     } 
    ); 
    // since the page starts off with the div shown, so let's hide it. 
    // note that this will do the slow fade - you may want to check for this inside the toggle function and just do an instant hide() instead 
    if (footeroff == "off") { 
     toggle_footer.toggle(); 
    }; 
}); 
+0

嗨格雷戈,现在隐藏.toogle_footer。 :D我不知道为什么..但任何..没有,对不起,仍然需要双击。 :( – Damoch 2011-06-16 09:59:19

我知道这是一个非常古老的问题,而只是对于那些寻求速战速决的人,这个工作对我来说:

一个。在PHP/HTML文件中:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/.../jquery.min.js"></script> 
    <script> 
    $(document).ready(function(){ 
     $("#pClick").click(function(){   
      $("#pText").toggle(); 
      $("#pText").text("..."); 
     }); 
    }); 
    </script> 

b。在CSS文件中:

#pText {display: none;} 

它现在即使在第一次点击时也能正常工作。这是一个简单而快速的答案,我希望对某些人有用。