2012-04-11 16 views
1

2つの関数間を移動するためにjQueryトグルを使用して実験しています。これまでの結果は不安定でした。試用シナリオのコード全体を以下に示します。jQuery関数間の切り替え - 0,1,2,3 ... timesの実行

<html> 
<head> 
    <script type="text/javascript" src="../js/jquery.js"></script> 
    <script> 
    $(document).ready(function(){ 
    $('#id').on('click',function(event){ 
     $(this).toggle(
      function(){console.log('Hide');}, 
      function(){console.log('Show');} 
     ); 
    }); 
    }); 
    </script> 
</head> 

<body> 
    <div id="id">Hello</div> 
</body> 
</html> 

「Hello」を初めてクリックすると、ログに何も表示されません。もう一度クリックで

[Nothing] 

、私が手に:第三に

Hide 

を、それが追加されています。第四に

Show 
Hide 

を、それが追加されます。

Hide 
Show 
Hide 

5番目には、次のように追加されます。

Show 
Hide 
Show 
Hide 

私はあなたがパターンを見ることができると信じています。なぜこれをやっているのですか?私は.stop(true)と実験したが、役に立たない。

ありがとうございました。

答えて

4

toggle()がクリックで実行されるため、clickイベントラッパーは必要ありません。

$('#id').toggle(
     function(){console.log('Hide');}, 
     function(){console.log('Show');} 
    ); 

あなたの現在のコードは、あなたが何かあなたが要素をクリックしてください最初の時間を取得しない理由があり、clickイベントにそれがクリックされた最初の時間をトリガするためにtoggle()を添付する。

+0

美しい!私がトグルを使い始める前に、何か違うものを試すという遺産がクリックでした。クリックラッパーを削除すると、クリック時に必要なものが2つの切り替え機能(少し重複することがあります)内で発生した場合、問題は解決されます。または、私は.toggle(...)を使うことができると思います( 'click'、...)、できませんか? – Nick

+0

@Nickうれしいことに、シドニーの開発者と仲良く! – alex

+0

@Nick 'toggle()'と 'on()'を連鎖させることができます。ここで、 'on()'がクリックごとにトリガされます。 – alex

関連する問題