• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jqueryを使ってtrの中のthとtdの色を入れ替えたいと思っていま)

jqueryを使ってtrの中のthとtdの色を入れ替えたいと思っています

このQ&Aのポイント
  • jqueryを使ってtrの中のthとtdの色を入れ替える方法をご教授ください
  • 最近jqueryを導入してCSSをいじっていますが、うまくいきません
  • テーブル中のtrで偶数と奇数で縞々になっているとことをマウスが乗っかるとそのtrに内包するthとtdが同じ色に変わるように設定したいです

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

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.4

#1です #3の回答を見てそーゆーのもありかな、と思ったので同じく対応するTHを処理する方法を。 ただし「trに内包する」ってあるので同じ行にthもあるものとしてます。 $(function(){ $(".A tr > *").hover(function(){ $(this).addClass("over"); $('th',$(this).parent()).addClass("over"); },function(){ $(this).removeClass("over"); $('th',$(this).parent()).removeClass("over"); }); $(".A tr:even").addClass("even"); }); あと、#2さんのご指摘はその通りでした。 cssの順序やセレクタの書き方には注意しておかないとクラスが変更されててもスタイルが適用されないケースがあります。 NGのケース .over {~} .even {~} class="even over" になった時も後に記述があるevenのスタイルのまま ついでに、最初の時に書きませんでしたがmouseoverとmouseoutの組み合わせならhoverが代わりにもなります。要素内に他の要素があってもmouseoutにならないのでこちらの方が使い勝手がいいかと思います。 http://semooh.jp/jquery/api/events/hover/over%2C+out/

keeeeeeeen
質問者

お礼

丁寧な解説ありがとうございます!! 無事解決しました!!

その他の回答 (3)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

とりあえず、対応するTHも同時に色を変えるように ちょっと追加しました。 $(function(){ $(".A tr > *").mouseover(function(){ var th=$(this).parents("table").get(0).rows[0].cells[this.cellIndex]; $(this).addClass("over"); $(th).addClass("over"); }).mouseout(function(){ var th=$(this).parents("table").get(0).rows[0].cells[this.cellIndex]; $(this).removeClass("over"); $(th).removeClass("over"); }); $(".A tr:even").addClass("even"); });

keeeeeeeen
質問者

お礼

thまで変える仕様でお答えくださりありがとうございます!! 無事解決できました!!

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

No1様と同じ意見なのですが… その場合、その後に書いてある  $(".A tr:even").addClass("even"); が、場合によってはバッティングするような気が…

keeeeeeeen
質問者

お礼

ありがとうございます。 無事解決できました!!

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

セル上のイベントで操作してもイベントの起きたセルでしか効果が起きないのは当然の結果ですよね。 やるなら他のセルの処理も加えなければいけません。 ただ、マウスの乗った行の色を変えたいならthやtdではなくtrの背景を変えてはどうでしょうか。 $(function(){ $(".A tr").hover(function(){ $(this).addClass("over"); },function(){ $(this).removeClass("over"); }); $(".A tr:even").addClass("even"); });

keeeeeeeen
質問者

お礼

ありがとうございます。 無事解決できました。

関連するQ&A