jQueryで画像の入れ替えができない問題に困っています

このQ&Aのポイント
  • jQueryを使用して、画像の入れ替えを行いたいのですが、うまくいきません。
  • 透過gifを使用して、ブロック全体をクリック範囲にすることができました。
  • li要素内の特定のクラスに設定されている画像をマウスオーバー時に入れ替えたいのですが、セレクタの指定が上手くできません。
回答を見る
  • ベストアンサー

jquerで画像の入れ替えをしたいのですが、上手く行かず困っております

jquerで画像の入れ替えをしたいのですが、上手く行かず困っております。 ブロックを丸ごとクリック範囲にするため、透過gifをかぶせています。 htmlは下記のようになりますが、マウスオーバーで背景と、<p class="ここも変更">に入っている画像を入れ替えたいです。 <ul> <li> <div class="data"> <h3>タイトル</h3> <p>~</p> <p class="a">~</p> <p class="ここも変更"><img src="***.png" /></p> </div> <img src=".**.jpg" /> <a href="***.html" class="sp"><img src="sp.gif" /></a> </li> </ul> 背景についてはスクリプトができております。 liにクラスをつけて、cssで背景を書き換えています。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ $(function(){ $("body#list.index #contents ul li a.sp").mouseover(function(){ $(this).parents('li').addClass("over") ; }).mouseout(function(){ $(this).parents('li').removeClass("over"); }); }); ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ しかし、<p class="ここも変更">の部分について、セレクタの指定がうまくできずにいます。 よろしくお願いいたします。

noname#146582
noname#146582

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

  • ベストアンサー
  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.1

もっと簡単な方法もあるかもしれませんが。。 ※「ここも変更」はclass名を英文にしておいたほうが無難かもしれません。 $(function(){ $("a.sp").mouseover(function(){ $(this).parents('li').addClass("over"); var image = $(this).parents('li').find('p.ここも変更 img').attr('src'); image = image.replace(/^(.+?)(\.(png|jp(e)?g|gif))$/g, "$1_over$2"); $(this).parents('li').find('p.ここも変更 img').attr('src',image); }).mouseout(function(){ $(this).parents('li').removeClass("over"); var image = $(this).parents('li').find('p.ここも変更 img').attr('src'); image = image.replace(/^(.+?)_over(\.(png|jp(e)?g|gif))$/g, "$1$2"); $(this).parents('li').find('p.ここも変更 img').attr('src',image); }); });

noname#146582
質問者

お礼

少々体調を崩してしまいレスが遅くなりました。 希望の動作ができ、ソースの方も理解できました! kuzumiHKさん、ありがとうございました。

noname#146582
質問者

補足

ありがとうございます。 ぱっとみてすぐ理解できないので、明日リファレンスを見ながらどうなっているのか調べてさせていただきます。 class名の「ここも変更」実際には英数で書いております。 変更をしたい場所がわかりやすいように日本語にしましたが逆にわかりにくくなってしまったようで申し訳ありません。

関連するQ&A

  • 初心者です jQueryのマウスオーバーについて

    jQueryを使った画像を使ったメニューを作成しています。 <ul class="drop2">をマウスオーバーしたときに親の位置にある画像1.gifが画像1_o.gifに 切り替わるようにしたいと思っています。 調べながら作ってみたのですが、画像の切替がうまくいきません。 parentを使わずに画像1.gifをdivで囲って指定すれば切り替わったのですが、2つ以上メニューを 作ると、他のulにマウスオーバーしたときも切り替わってしまいます。 ご教授して頂けると嬉しいです。 よろしくお願いいたします。 ■スクリプト部分 jQuery(function ($) { $('ul.drop2').mouseover(function () { // console.log('mouseover'); デバック用 var onSrc = $(this).parent('ul.drop1 a img').attr('src').replace('.gif', '_o.gif'); $(this).parent('ul.drop1 a img').attr('src', onSrc); }); $('ul.drop2').mouseout(function () { var onSrc =$(this).parent('ul.drop1 a img').attr('src').replace('_o.gif', '.gif'); $(this).parent('ul.drop1 a img').attr('src', onSrc); }); }); ■html部分 <ul class="drop1"> <li><a href="/"><img src="画像1.gif" alt="HOME" /></a> <ul class="drop2"> <li><a href="#"><img src="画像1-1.gif" alt="HOME" /></a></li> <li><a href="#"><img src="画像1-2.gif" alt="HOME" /></a></li> </ul> </li> </ul>

  • jqueryを使ってポップアップを作ろうとしています。

    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"> ~~同じ構成要素の繰り返し。

  • サムネイル画像のclass切替がうまく動かない。

    すみません、jquery初心者です。 下記の様にサムネイルをクリックすると、mainの画像が切り替わる画像ギャラリーを作成しておりまして、 サムネイルをクリックして class="current" を切り替えたいのですが、うまく動きません。 別のサムネイルをクリックすると、最初のclassはremoveされるのですが、 クリックしたサムネイルにclassを付けたいのですが効きません。。 $(document).ready(function() { $(function(){ $('#sum li a').click(function(){ var h = $(this).eq(0).attr('rel'); $('#main img').fadeOut(function(){ ($('#main img').attr("src",h)).fadeIn(); $('#sum li a').removeClass('current'); $(this).addClass('current'); }); return false; }) }); }); <div class="main_area"> <p id="main"><img src="images/img01.jpg" /></p> </div> <ul id="sum" class="clearfix"> <li><a href="#" rel="img01.jpg" class="current"><img src="images/sum01.jpg" /></a></li> <li><a href="#" rel="img02.jpg"><img src="images/sum02.jpg" /></a></li> <li><a href="#" rel="img03.jpg"><img src="images/sum03.jpg" /></a></li> </ul> ご教授頂けると非常に助かります。 よろしくお願いします。

  • スタイルシート 画像の置き換え について

    スタイルシート初心者です。 宜しくお願いします。 ----------------------------------------------- <div id="Nav"> <ul> <li><a href="/nav1/"><img src="/nav1.gif"></a></li> <li><a href="/nav2/"><img src="/nav2.gif"></a></li> </ul> </div> ----------------------------------------------- 上記、nav1.gifとnav2.gifの2枚の画像を、スタイルシートで別の2枚へ差し替えたいのですが、何か方法はありますでしょうか。 #Nav li img{ } ではダメですよね。 何か上手い指定方法があるのでしょうか。 HTMLは変更不可です。

  • jQueryを使ってある画像を別の画像に置き換えたい。

    jQueryを使ってある画像を別の画像に置き換えたい。 jQueryを使って、<body class="info">の時にだけ <ul id="global-nav">の中の画像「info.gif」を「info_on.gif」に 置き換えるということをしたいです。 <body class="info"> <ul id="global-nav"> <li><img src="info.gif" /></li> <li><img src="about.gif" /></li> </ul> </body> ↓↓↓ <body class="info"> <ul id="global-nav"> <li><img src="info_on.gif" /></li> <li><img src="about.gif" /></li> </ul> </body> どのように記述をしてやるとうまくいきますでしょうか。 色々試しているのですがうまくいきません。 よろしくお願いします。

  • 【CSS】右側エリアがずれ込む

    CSS初心者で、会社のサイトの変更をしています。 現状メイン画像1枚のレイアウトだったところを 差換えでjavascriptで画像を切り替え、リンク先も変更できるようにしました。 はめ込んだところ、右側のボタンがずれ込みます。 何をどうしたら解決できるかわかりません。 どうしたら修正できますでしょうか。 よろしくお願い申し上げます。 ≪修正前のレイアウト≫ □□□□□□□□□ ■■■■■ □□メイン画像□□ ■ボタン■ □□□□□□□□□ ■■■■■ 【HTML】 <div id="keySpace"> <p> <a href="shopping/index.html"><img src="img/key.jpg" border="0" /></a></p> <ul> <li><a href="shopping/index.html"><img src="img/btn_service.gif" width="205" height="54" class="imgover" /></a></li> <li><a href="info/member.html"><img src="img/btn_member_end.gif" width="205" height="54" class="imgover" /></a></li> </ul> </div> 【CSS外部】 #keySpace { width: 860px; margin: 0px auto; padding: 0px 0px 7px; background: #FFF; } #keySpace p { width: 643px; margin: 0px 12px 0px 0px; float: left; display: inline; } #keySpace ul { width: 205px; float: right; } #keySpace ul li { margin: 0px 0px 3px; } ≪修正後のレイアウト≫ □□□□□□□□□ □□メイン画像□□ □□□□□□□□□ ■■■■■ ■ボタン■ ■■■■■ 【HTML】 <div id="keySpace"> <p> <div id="link1"> <a href="index.html"><img border="0" src="img/top_01.jpg" /></a></div> <div id="link2" class="banner"><a href="shopping/index.html"><img border="0" src="img/top_02.jpg" /></a></div> </p> <ul> <ul> <li><a href="shopping/index.html"><img src="img/btn_service.gif" width="205" height="54" class="imgover" /></a></li> <li><a href="info/member.html"><img src="img/btn_member_end.gif" width="205" height="54" class="imgover" /></a></li> </ul> </div> 【CSS】上記に追加 <style type="text/css"> .banner { display:none; } </style>

    • ベストアンサー
    • HTML
  • 画像メニューの開閉

    JavaScriptで画像メニューの開閉を行いたいのですが、 うまく動きません。 「aaa」が閉じていた場合には「aaa」を開くまではできたのですが、 「bbb」を閉じるという1行を追加したら動かなくなりました。 どなたかご教授願います。 【JavaScript】 function showSubmenu01() { if(document.getElementById("aaaSub").innerHTML == '') document.getElementById("aaaSub").innerHTML = '<img src="aaa.gif">'; document.getElementById("bbbSub").innerHTML = ''; else document.getElementById("aaaSub").innerHTML = ''; } 【HTMLソース】 <ul> <li><a href="#" onClick="showSubmenu01()"><img src="img/menu_aaa.gif" /></a></li> <li><div id="aaaSub"></div></li> <li><div id="bbbSub"><img src="bbb.gif" /></div></li> </ul>

  • CSS リスト 外枠から文字と画像がはみ出る clearfix

    |ーーーーーーーーーーーーーーーーーー| ||ーーーー| →1111 →444 →777 | || 画像 | →2222 →555 →888 | ||ーーーー| →3333 →666 →999 | |ーーーーーーーーーーーーーーーーーー| 質問お願いします。 上記のように、左に画像があり、その横にリストが3つ並んでいる状態で1pxの外枠をつけたいのですが、 外枠が上一行目の所までしか囲んでくれません。 (※→は矢印の画像です) CSSの方に入っている.clearfixを使うとよいそうですが、 HTMLのどの部分に入れても上手く表示されません…。 どのように使えばいいのでしょうか? またどこか間違っている所があるのでしょうか? よろしければご教授ください。 ソースです。 --------------------------------- html <div class="box"> <img src="000000.gif" class="imgL"/> <ul> <li><img src="img/yajirusi.gif" /> 1111</li> <li><img src="img/yajirusi.gif" /> 2222</li> <li><img src="img/yajirusi.gif" /> 3333</li> </ul> <ul> <li><img src="img/yajirusi.gif" /> 4444</li> <li><img src="img/yajirusi.gif" /> 5555</li> <li><img src="img/yajirusi.gif" /> 6666</li> </ul> <ul> <li><img src="img/yajirusi.gif" /> 7777</li> <li><img src="img/yajirusi.gif" /> 8888</li> <li><img src="img/yajirusi.gif" /> 9999</li> </ul> </div> --------------------------- css .imgL { float: left; margin: 0 10px 10px 0;} .box { border:1px #CCCCCC solid; padding:5px;} .box ul{ float:left;} .clearfix:after { content: "."; display: block; clear: both; height: 0; visibility: hidden; } .clearfix { display: inline-block; } /* exlude MacIE5 \*/ * html .clearfix { height: 1% } .clearfix {display:block;} /* end MacIE5 */

    • ベストアンサー
    • HTML
  • メニューボタン画像のロールオーバー時の処理について

    以下のスクリプトを用いてドロップダウンメガメニューを作成しています。 jQuery MegaMenu Plugin http://www.geektantra.com/2010/05/jquery-megamenu-2/ このメニューのボタンを画像にし、ロールオーバー時には透過して背景が見えるようにしたいと考えています。 --------------------------------------- <script type="text/javascript" src="/_js/jquery-1.7.1.min.js"></script> <script type="text/javascript" src="/_js/jquery.megamenu.js"></script> <script type="text/javascript"> $(function() { .find('img.btn').hover( function(){ $(this).stop().animate({'opacity' : '0'}, 200); }, function(){ $(this).stop().animate({'opacity' : '1'}, 500); } ); }); </script> <ul id="megamenu"> <li> <a><img src="../_images/btn_01.jpg" alt"ボタン1" class="btn"/></a> <div>コンテンツA</div> </li> <li> <a class="mm-item-link-hover"><img src="../_images/btn_02.jpg" alt"ボタン2" class="btn"/></a> <div>コンテンツB</div> </li>↑※このメニューにロールオーバーしている場合、class="mm-item-link-hover"がaに追加される。 <li> <a><img src="../_images/btn_03.jpg" alt"ボタン3" class="btn"/></a> <div>コンテンツC</div> </li> </ul> ------------------------------------- 上記のように記述して、ボタン画像にロールオーバーするとドロップダウンメニューが出現、さらにそのボタン画像が透過し、背景が見えるようにできました。 しかし、画像からマウスをおろしてドロップダウンメニューに移動すると透過が戻ってしまいます。 jquery.megamenu.jsの処理で、ドロップダウンメニューにロールオーバーしている間、class="mm-item-link-hover"がaに追加されています。 これを利用して、a.mm-item-link-hoverのなかのimg.btnを透過GIFに置き換えたいと思いましたが、うまく行きません。 【追加したスクリプト】 $(function() { $("a.mm-item-link-hover").each(function() { $("img.btn").attr("src", "/img/blank.gif"); }); }); 上記の処理の方法は、考え方としては正しいでしょうか? また、その場合のスクリプトはどのように書けばよろしいでしょうか? ご教授頂けると非常に助かります。

  • 画像が表示されない。

    質問させてもらいます。 jqueryのjCarouselLiteを使ってメニューを作りました。 その際、メニューをクリック等するとコンテンツが表示されるようにしようと思っているのですが、 初期状態を非表示にしたく、コンテンツ部分(AAA)を{ display: none; }にしました。 それでメニュークリックして表示させるまでは良いのですが、 AAAの中身(こちらにもjCarouselLiteのスライドを使用しています)の画像だけが表示されないのです。 jCarouselLiteを使用せず、普通に画像やテキストのみを置いた場合は問題なく動作します。 また、{ display: none; }を入れない場合も(見栄えの問題があるものの)問題なく動作します。 【メニュー部分】 <div class="carousel"> <div class="jCarouselLite"> <ul> <li><a href=""onClick="document.getElementById('AAA').style.display = 'inline';" /> <img src="img/1.jpg" /></a></li> </ul> </div> </div> 【コンテンツ部分】 <div id="AAA"> <div class="carousel2"> <a href="#" class="prev2"><img src="img/left.png" border="0" /></a> <a href="#" class="next2"><img src="img/right.png" border="0" /></a> <div class="jCarouselLite2"> <ul> <li><img src="img/001.jpg" /></li> <li><img src="img/002.jpg" /></li> <li><img src="img/003.jpg" /></li> </ul> </div> </div> </div> 上記のleft.pngなどは表示されるのですが、img/001.jpgなどが表示されません。 <div id="AAA"></div>内<div class="carousel2"></div>内に001.jpgを置いた場合は普通に表示されます。 問題の発生するjCarouselLite2のCSSは以下のとおりです。 .jCarouselLite2 { margin: 5px auto 0px; width: 560px; } .jCarouselLite2 li img, .jCarouselLite2 li p { background-color: #fff; width:500px; height: 333px; margin: 5px; } 説明不足もあるかも知れませんが、ご指摘いただけると幸いです。

    • ベストアンサー
    • CSS

専門家に質問してみよう