2011-12-04 5 views
1

何らかの理由で#button divの代わりに#display divをクリックすると何らかの理由でこのコードが機能しますが、なぜこのように動作しますか? #buttonではなく#display ..何が間違っていますか?.toggleを使用して関数function()を使用する異常なアクティビティ

<script> 

    $("#button").click(function(){ 

      $("#display").toggle(
        function(){ alert('On') }, 
        function(){ alert('Off') } 
      ); 
    }); 

</script> 

HTML::ここで

は、コード例です。ここ

<div id="button"></div> 
    <div id="display"></div> 

は、オンライン例(作業)である:ここでは http://jsfiddle.net/MuMZV/

+1

あなたのCSSは次のようになりありませんか? #buttonと#表示に境界線を置くと、洞察が得られるでしょう – evan

+1

実際にあなたが間違った '.toggle()'を使っているのを待っています:http://api.jquery.com/toggle-event/ http://api.jquery.com/toggle/ – evan

+0

ここをクリック:http://jsfiddle.net/MuMZV/ –

答えて

1

トグル機能に渡した値が正しくありませんでした。これは、オプションで、継続時間、イージング、コールバックを期待しています。あなたのdisplayのdivの表示を切り替えるためにあなたのbutton1のdivにクリックを引き起こす

$("#button1").click(function(){ 
    $("#display").toggle(); 
}); 
:にコードを変更します。そして、これは:

$("#button1").click(function(){ 
    $("#display").toggle(2000, function() { alert("toggled"); }); 
}); 

終了時に警告がポップアップするように、隠蔽/遅延が2秒に遅くなります。

そして、あなたがトグル要素が表示されているかどうかに基づいて、真または偽表示したい場合、これはあなたが望むものである:

$("#button1").click(function(){ 
    $("#display").toggle(1000, 
     function() { alert($(this).is(":visible")); }); 
}); 
+0

なので、トグルを使用することはできません2つの機能を切り替えるには? –

+0

@ ZeeTee - 私のドキュメントを読んで、私はそうは思わない。 JustAnilの答えは関数を代用するようになっていますが、もはや私が元の要件の一部であったと思う表示divを切り替えることはありません。 –

0

あなたが探しているものされています。

$('#button').toggle(function() { 
    alert('First handler for .toggle() called.'); // On 
}, function() { 
    alert('Second handler for .toggle() called.'); // Off 
}); 
同じHTMLで10

:ここ

<div id="button"></div> 
<div id="display"></div> 

ですJSFiddle作業:http://api.jquery.com/toggle-event/

:あなたは.toggle()にして二つの機能を渡しているので、それはトグルイベントメソッドを使用していますhttp://jsfiddle.net/mtCry/1/

1

をあなたはおそらく、期間とコールバックを渡すため、このメソッドを使用することができます:http://api.jquery.com/toggle/

これは本当にconfですjQueryのために、同じ名前の2つのメソッドがありますが、結果は大きく異なります。

+0

例を挙げていただけますか? –

+0

おそらく、あなたは何が起こると予想されるのかをより明確にすべきです。 – evan

+0

このように2つの異なる機能を切り替えることができます。 –

関連する問題