• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jqueryについて(v 1.4.2))

jQueryについて(v 1.4.2)の初心者向け質問に対する解決方法

このQ&Aのポイント
  • 初心者がjQuery(v 1.4.2)を使用して個々のdivに適用する方法について質問しています。
  • 現在のコードでは.each()を使用してもうまくいかず、全てのdivの.largeImageが反応してしまいます。
  • 解決策として、.each()の使用方法や他のアプローチについてアドバイスを求めています。

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

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.2

すみません、HTMLの構造をちょっと見間違えてました。 --- <div class="thumbs"> <h1>ギャラリータイトル</h1> <p> <a href="images/img2-lg.jpg" title="タイトル 2"> <img src="images/img2-thumb.jpg" /> </a> (略) </p> <p><img class="largeImage" src="images/img1-lg.jpg" alt="タイトル 1" /></p> </div> --- こんな感じにしてください。 要は、「サムネイル画像のa要素」と「拡大表示のimg要素」の両方が入った 「同じ構造のdiv」の1組をセレクタで指定できる名前付けが必要になるということです。

oochie
質問者

お礼

引き続きの回答ありがとうございます。 教えていただいたとおり、divにクラスthumbsを指定することによって 各divの.largeImageが反応し、問題が解決できました。 divにクラス指定するのは全然気づきませんでした・・・。 おっしゃられた意味も全て理解できましたし、またひとつ勉強になったので 質問して良かったです。 ありがとうございました。

その他の回答 (1)

  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

実際に試してませんが、たぶん --- $(function(){ $(".thumbs").each(function(index, elem) { $("a",$(elem)).click(function() { var largePath = $(this).attr("href"); var largeAlt = $(this).attr("title"); $(".largeImage",$(elem)).attr({ src: largePath, alt: largeAlt }); $("h1 em").html(" (" + largeAlt + ")"); }); }); --- こんなコードでいけると思います。 $()は、第二引数を指定することで、その指定要素の下から検索するようになります。 $(".thumbs").each で、クラスthumbsの要素について処理してますが、その中では、 $("a",$(elem)) は「elem=その時eachで処理対象にしているthumbsクラス要素」の下の a タグ要素を検索 $(".largeImage",$(elem))は、「elem=その時eachで処理対象にしているthumbsクラス要素」の下の largeImage クラス要素を検索 することで、cilck対象要素と書き換え対象要素を、同じ thumbs クラス要素配下に限定できます。

oochie
質問者

お礼

早速の回答ありがとうございます。 解りやすく教えていただき勉強になります。 教えていただいたとおり試してみましたが、うまくいかず .largeImageが無反応になりました。 また、aをクリックすると画像ページに飛んでしまうのでreturn falseを 追加しました。 試してみたコード↓ $(function(){ $(".thumbs").each(function(index, elem) { $("a",$(elem)).click(function() { var largePath = $(this).attr("href"); var largeAlt = $(this).attr("title"); $(".largeImage",$(elem)).attr({ src: largePath, alt: largeAlt }); $("h1 em").html(" (" + largeAlt + ")"); return false; }); }); }); 自分なりに試行錯誤してみましたが、まだ解決策が出ません。 引き続きよろしくお願いします。

関連するQ&A