• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jQueryを使ってある画像を別の画像に置き換えたい。)

jQueryを使って画像を置き換える方法

このQ&Aのポイント
  • jQueryを使用して画像を別の画像に置き換える方法について説明します。
  • 具体的な要件は、<body class="info">の時にだけ<ul id="global-nav">の中の画像「info.gif」を「info_on.gif」に置き換えることです。
  • 試行錯誤しているがうまくいかない場合についても対策方法を提案します。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

bodyのクラスは動的に変わるのでしょうか? それともonload時にチェックすればよいだけ? とりあえず、ロード時に設定すればよいだけなら、jquery使うまでもなさそうな気がしますが、jqueryというご質問なので… ><ul id="global-nav">の中の画像「info.gif」を「info_on.gif」に という言葉通りに書くなら、 $(function() { if ($("body").hasClass("info")) { $("#global-nav img[src$='info.gif']").each(function() { $(this).attr("src", "info_on.gif"); }); } }); みたいな感じでしょうか?

Java-Java
質問者

お礼

ありがとうございます! 教えていただいた方法ですと、画像のリンクを絶対パスにしないといけなかったので、下記に変更させていただきました。 $(this).attr("src",$(this).attr("src").replace(/^(.+)(\.[a-z]+)$/, "$1_on$2")) ちなみにJavaScriptだけですと、どのように書くのでしょうか。 後学のために教えていただけないでしょうか。

その他の回答 (2)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

 var class = はまずかったです。IEに怒られました。  Classなら怒られないです。 function func(){  var Class = document.body.getAttribute("class").split(" ");  for(var i=0;i<Class.length;i++){   if(Class[i]=="info"){    var t=document.querySelectorAll("#global-nav img[src='info.gif']");    t[0].src="info_on.gif"   }  } }

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

jQuery使わずに、でも「Selector API」は使う。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>kasu</title> <style type="text/css"></style> <script type="text/javascript"> if('undefined' !== typeof window.addEventListener)   window.addEventListener('load',func,false);  else if ('undefined' !== typeof window.attachEvent)   window.attachEvent('onload',func); function func(){  var class = document.body.getAttribute("class").split(" ");  for(var i=0;i<class.length;i++){   if(class[i]=="info"){    var t=document.querySelectorAll("#global-nav img[src='info.gif']");    t[0].src="info_on.gif"   }  } } </script> </head> <body class="info"> <ul id="global-nav"> <li><img src="info.gif" /></li> <li><img src="about.gif" /></li> </ul> </body> </html>