- ベストアンサー
jqueryを使ってtrの中のthとtdの色を入れ替えたいと思っています
- jqueryを使ってtrの中のthとtdの色を入れ替える方法をご教授ください
- 最近jqueryを導入してCSSをいじっていますが、うまくいきません
- テーブル中のtrで偶数と奇数で縞々になっているとことをマウスが乗っかるとそのtrに内包するthとtdが同じ色に変わるように設定したいです
- みんなの回答 (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/
その他の回答 (3)
- yyr446
- ベストアンサー率65% (870/1330)
とりあえず、対応する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"); });
お礼
thまで変える仕様でお答えくださりありがとうございます!! 無事解決できました!!
- fujillin
- ベストアンサー率61% (1594/2576)
No1様と同じ意見なのですが… その場合、その後に書いてある $(".A tr:even").addClass("even"); が、場合によってはバッティングするような気が…
お礼
ありがとうございます。 無事解決できました!!
- steel_gray
- ベストアンサー率66% (1052/1578)
セル上のイベントで操作してもイベントの起きたセルでしか効果が起きないのは当然の結果ですよね。 やるなら他のセルの処理も加えなければいけません。 ただ、マウスの乗った行の色を変えたいならthやtdではなくtrの背景を変えてはどうでしょうか。 $(function(){ $(".A tr").hover(function(){ $(this).addClass("over"); },function(){ $(this).removeClass("over"); }); $(".A tr:even").addClass("even"); });
お礼
ありがとうございます。 無事解決できました。
お礼
丁寧な解説ありがとうございます!! 無事解決しました!!