3

2 つの可能なボタンを持つスライダーを作成し.toggleまし.clickた。問題は、.toggle で開いて で閉じてから、元のボタン.clickで再度開こうとする場合です。.toggleその時点でマウスを 2 回クリックする必要があります。

<script type="text/javascript">

  $(document).ready(function(){

    $(".profile_slide_btn").toggle(

     function(){
       $("#sliding_header").animate({ 
         top: "0px"
       }, 300 );
     }, 

     function(){
      $("#sliding_header").animate({ 
         top: "-600px"
       }, 300 );
  });

 $(".profile_slide_btn2").click(

     function(){
       $("#sliding_header").animate({ 
         top: "-600px"
       }, 300 );
     });
  });

</script>

助けてくれてありがとう!!

4

2 に答える 2

1

問題は、トグルが1つの機能を実行してから別の機能を実行することだと思い.clickます.toggle.

関数に依存するのではなく、手動でトグルを行うようにロジックを変更する必要がある場合があり.toggleます。

編集:したがって、次のようなものです(これはテストされていないことに注意してください。アニメーション中にクリックすると問題が発生する可能性があります):

<script type="text/javascript">

    $(document).ready(function(){

        $(".profile_slide_btn").click(
            function(){
                if ($("#sliding_header").css("top") == "0px") {
                    hideHeader();
                } else {
                    showHeader();
                }
            });

        $(".profile_slide_btn2").click(hideHeader);

        function showHeader() {
            $("#sliding_header").animate({ top: "0px" }, 300 );
        }

        function hideHeader() {
            $("#sliding_header").animate({ top: "-600px" }, 300 );
        }
    });

</script>
于 2009-12-23T22:14:04.920 に答える
0

これは、スライダーが閉じられたことを .toggle が認識していないためです。

  1. トゥーグルで開く:0px
  2. クリックで閉じる: -600px
  3. Toggle はまだ閉じようとしていると考えているので、もう一度 -600px にします。

if を使用して、スライダーの top プロパティが -600px のときと 0 のときを知ることで、いつ閉じていつ開くかを知ることができます。

于 2009-12-23T22:17:13.713 に答える