

jqueryを使ってポップアップを作ろうとしています。
アイコンにマウスオーバーでポップアップ表示、ポップアップの×をクリックしてポップアップ削除という動きまではできています。
しかしマウスオーバーのアイコンはul liの中にあるのに、ポップアップはulの外に置かれているため、thisが使えず、アイコンにマウスオーバーすると全てのポップアップが表示されてしまいます。
これをマスウオーバーしたアイコンのポップアップのみ表示できるようにしたいです。
下記にソースになります。表示させたいのはアイコン02にカーソルを合わせた場合のみになります。
よろしくお願いいたします。
JS
----------------------------------------------------------------
$(function(){
$(".popup").hide();
$(".box ul li.icon02").mouseover(function(){
$(".popup").fadeIn("fast").css({
top:10+"px",
left:-95+"px"});
});
$(".popup img.closed").click(function(){
$(".popup").fadeOut("fast");
});
});
html
----------------------------------------------------------------
<div class="box">
<div class="boxIn">
<ul>
<li class="ico01"><a href="#"><img src="アイコン1url" /></a></li>
<li class="ico02"><a href="#"><img src="アイコン2url" /></a></li>
<li class="ico03"><a href="#"><img src="アイコン3url" /></a></li>
</ul>
<!--▼pop-up部分-->
<div class="popup">
<p>●●<img src="クローズボタンurl" alt="close" width="12" height="12" class="closed" /> </p>
<div class="popInner">
<p>ポップアップの中身</p>
<!--#popInner-->
</div>
<!--#popup-->
</div>
<!--▲pop-up部分ここまで-->
<!--#boxIn-->
</div>
<!--#box-->
</div>
以下
<div class="box">
~~同じ構成要素の繰り返し。
No.1ベストアンサー
- 回答日時:
$(".popup").~
↓
$(".popup" , $(this).parents(".box") ).~
これで、thisの先祖(".box")を起点とした".popup" が選択されます。
http://semooh.jp/jquery/api/traversing/parents/% …
closeボタンの処理同様の変更が必要かと思います。
この回答への補足
ありがとうございます!
マウスオーバーの方は上手く行きました!
閉じる方は同じ表記をしてもダメなようです。
popupの中のimg要素をクリックしてpopupをフェードアウトさせる。
popup img.closed = this
boxはpopupを包括しているので、thisの祖先要素。
"popup", $(this).parents(".box")
で選択したimg.closeの祖先要素にあたるboxの中のにあるpopupをフェードアウト。
という考え方だと思うのですが・・・。
No.3
- 回答日時:
>残念ながら、上記の記述でも
そうですか。一応テストしてみるとうまく動作するので
質問で挙げたHTMLとの構成の違いとかがないか慎重に確認してみてください。
steel_gray様
何度もレスありがとうございました。
後日サーバーにあげたページにアクセスしたら問題なく動くようになっていました!
ブラウザのリロードは何度もしたのですが、キャッシュが消えきっていなかったようです。
本当にありがとうございます!
No.2
- 回答日時:
その考え方で「も」合っていると思います。
>"popup", $(this).parents(".box")
↑popupの前にドットが無いのは補足入力時のタイプミス?
ただし、クローズボタン(this)にとって .popup は祖先にあたるので .box まで戻って探す必要はなく、
$(this).parents(".popup").fadeOut("fast");
で、いいと思います。
この回答への補足
再度ありがとうございます。
>popupの前にドットが無いのは補足入力時のタイプミス?
はい、ミスタイプでした。
申し訳ありません。
残念ながら、上記の記述でもオープンした全てのポップアップが閉じてしまいます。
HTMLの書きなおしも含め、もう少しいろいろ検討してみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【jQuery】2分割レイアウトで、...
-
liの数によってulの横幅を動的...
-
MAX関数を使ってからLEFT JOIN...
-
jQueryで特定のURLの時のみ表示
-
あるwebサイト上の画像表示につ...
-
[急ぎ] videoタグで埋め込んだm...
-
スマートフォンサイトに部分的...
-
VBScript+IEのチェックボック...
-
バッチファイルでカウントアッ...
-
重なった画像にクリックイベン...
-
window.openで値の渡し方を教え...
-
MFCで画像を表示させているので...
-
imageクラスからiconクラスに変...
-
【HP作成】クリックすると下...
-
透過pngの透明部分以外をクリッ...
-
初期状態でテーブルの非表示
-
jQueryで画像を重ねる
-
クリックでリンク先の切り替え
-
jQueryでシンプルドラッグドロ...
-
複数の要素を表示してる時だけ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Slick.jsのオプションrtlについて
-
【jQuery】2分割レイアウトで、...
-
bxSliderのランダム表示について
-
javascripteの件で、質問です。
-
[jQuery]bxSlider 一番最後と...
-
【iOS及びAndroid】リンク画像...
-
jqueryで画像をスライドさせる方法
-
CSSでマウスオーバーした画像を...
-
アコーディオンメニューが開い...
-
キャラクターがぴょこんと飛び...
-
liの数によってulの横幅を動的...
-
数ある中からランダムで抽出し...
-
ローカルでは問題なく動くがサ...
-
qtipの使い方について
-
jQueryを使ってある画像を別の...
-
javascript src書き換え
-
順番にクラスをつけていく方法
-
複数のJavascript の組込み方に...
-
スライドショー「Skitter」をカ...
-
横並びの画像を3枚時間差でフェ...
おすすめ情報