• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jqueryの表示非表示に関する質問)

jqueryの表示非表示に関する質問

このQ&Aのポイント
  • jqueryの初心者が表示非表示に関する質問です。display:noneで要素を非表示にして、クリックしたときに要素を表示するようにしたいのですが、2回クリックしないと表示されません。
  • 質問内容は、jqueryの初心者が表示非表示に関する問題についてです。display:noneを使用して要素を非表示にしていますが、クリックしたときに要素が表示されない問題が発生しています。
  • jqueryの初心者が表示非表示に関する問題について質問しています。要素の非表示にdisplay:noneを使用していますが、クリックしたときに要素が表示されない問題が発生しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5241/13712)
回答No.2

toggle を使うと、表示・非表示のボタンが押された回数で1つ目のfunctionを実行するか2つ目のfunctionを実行するか決めていますので、クリアを押してもtoggleのカウンタが増えないためそのような動きになります。 [最初] => spanは非表示、toggleのカウンターは0 [表示・非表示クリック1回目] => spanは表示、toggleのカウンターは1 (1つ目のfunction実行) [表示・非表示クリック2回目] => spanは非表示、toggleのカウンターは2 (2つ目のfunction実行) [表示・非表示クリック3回目] => spanは表示、toggleのカウンターは3 (1つ目のfunction実行) [クリア クリック] => spanは非表示、toggleのカウンターは3 [表示・非表示クリック4回目] => spanは非表示、toggleのカウンターは4 (2つ目のfunction実行) JavaScriptのプログラム部分を以下のようにするとご希望の動きになります。 $(function() { $("#a01").click(function(){ var spantag = $(this).parent().next().children("span"); if(spantag.attr("class")=="text_h"){ spantag.attr("class","text_v"); }else{ spantag.attr("class","text_h"); } }); $("#clear").click(function(){ $(this).parent().next().children("span").attr("class","text_h"); }); });

dark1981
質問者

お礼

分かりやすい解説ありがとうございます。

その他の回答 (1)

回答No.1

jQueryはtoggleの状態を内部変数で保持しています。 http://okwave.jp/qa/q6130109.html No.8のように、.click()の中で、 if( $(略).attr("class")==="text_v" ){ $(略).attr("class", "text_h" ); }else{ $(略).attr("class", "text_v" ); } と分岐して、自前でtoggleの処理をするか、 またはNo.8お礼のコードのようなプラグインを作らないと行けないと思います。

dark1981
質問者

お礼

ありがとうございます。まだまだ勉強しなければならないことが多いようです。

関連するQ&A