« | »

07月18日 

javascript

jQueryでお手軽CSS制御(Chromeでのバグの話も)

CSSの制御というか、Classの制御というか。
CSSを直接触っちゃうより、Classを用意しておいて付加したり外したりのほうが何かと管理もしやすいでしょ?

JAVASCRIPT:
  1. (function($) {
  2.     $(document).ready(function() {
  3.         $('#target tr:odd').addClass('odd');
  4.     });
  5. })(jQuery);

targetというIDを持つテーブルの奇数行trにoddというクラスを追加してあげてます。
行数の多いテーブルだと、いちいち奇数行にクラスを指定してやるのも面倒だし、行の入れ替えが発生した日にゃぁ、アンタ。リアルで「キーッ!!!」って叫んじゃうってモンですよ。

Javascriptの使用がOKだったら、とてもとても助かるね。

でも例えば、テーブルが2つ続いてて、それらにも奇数行毎にClassを付加したい場合、単純に考えて…

JAVASCRIPT:
  1. $('table tr:odd').addClass('odd');

としてしまうんだけど、1つめのテーブルが奇数行(例として5)で終わってしまった場合、2つめのテーブルのtrは「リセットされて1から」ではなく「5の続きの6から」となってしまい、なぜか偶数行スタート(本来は1だから奇数)になってしまい、具合が悪いことになっちゃうんですね~困る。
(解決法、探り中。末尾に空の<tr></tr>入れちゃうのでもOK。だけど文法的にはNG)

さらにGoogle Chromeで発見した不具合。
複数の要素を指定する時、コンマ(,)でセレクタを区切れば同時に選択できるのですが、

JAVASCRIPT:
  1. $('table tr:odd, ul li:odd').addClass('odd');

IEやFirefoxでは意図したとおりの動きになってるんですが、Chromeだけは最初の要素しか識別してくれない。単純な解決方法は、

JAVASCRIPT:
  1. $('table tr:odd').addClass('odd');
  2. $('ul li:odd').addClass('odd');

2行に分割…orz
うーむ、ちょっと切ないですね…

ちょっと検証が甘いですが、便利なjQueryもちょっとした落とし穴が用意されていますよ…というお話しでした。それでも便利すぎて手から離せないjQueryなのです。罪なヤツ。

トラックバック URL

コメント & トラックバック

おおぉぉ!

久しぶりにお仕事のお話…

ぼくも早く今、勉強している分野をモノにして
ジェイクエリやA jaxの勉強をしたいです。

独学だとホントにナカナカ進みません~(涙)

> さいとーさん
なかなか技術ネタが無くて肩身が狭いですw

プログラムはやはり手を動かしてナンボ、だと思います。その点Javascriptはテキストエディタとブラウザさえあれば作れるし、Firebug使えばデバッグもある程度容易になりますからね~

頑張って下さいねー

コメントフィード

コメント