JQueryのセレクタ指定の罠
罠…なんて少し大げさですが、ちょっとハマったことがありました。
JQuery(8系9系)を使っていてhtmlのセレクタ指定でうまく値を取得できなかったので、とりあえず備忘録。
htmlで
<div id="hoge"> <div class="firstclass"> <img src="image.jpg"> </div> </div>
というのがあって、
このソースから画像ファイル名を取得するとき、
$(#hoge .firstclass).attr("src");
とすれば、値が取れると思いますが、
今度は、こんなhtmlで
<div id="hoge" class="secondclass"> <img src="image.jpg"> </div>
このソースから画像ファイル名を取得しようとして…
$(#hoge .secondclass).attr("src");
とすれば、値が取れると思ったのですが…
と、取れなかった…
それどころか、この書き方で値が取れてないなんて思ってなくて、ちょっとハマってしまいました…
alertしてみて始めて気づき…なんとなく書いたのが、
$(#hoge.secondclass).attr("src");
(hogeと.secondclassの間のスペースを消してみた)
と、取れた!
え!?なに!?
ググったんですがそんな記事見当たらなかった…
つまり、idを基準に子クラスを呼ぶ場合は、最初の書き方で良いのですが、
idと同じタグ内に記載してあるクラスを呼びたい場合は、どうもスペースをつめないといけないようなのです。
こちらに関してはもっと検討していきたいです。
それにしても、idはユニークなので、本来はあまりこういう呼び出し方をしないはずですが、
どうしても今回はこういう風に実装せざるを得なかったのです…
今回は、なんとか仕事で実装しましたが、無駄な動きが多いソースになってしまった…
それに、リソースの無駄遣いや、個人的にはもっと直したかったです…
いろいろとまだまだ修行が足りません…トホホ…
ところでセレクタに関するURLメモ
Selectors - jQuery 日本語リファレンス
基本的なとこから
jQuery – いろんなセレクタ指定方法+αを覚えて、目的の要素をさくっと取得する | 1:n – DETELU Blog
一覧で分かりやすいかも
http://webdesignrecipes.com/webdesign-jquery-coding/
見やすくて分かりやすい!
他にも↑のページに似た素敵なページを見つけたのですが…URL見つけきれなかった…