• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jQueryで背景画像を変更したい。)

jQueryで背景画像を変更する方法

このQ&Aのポイント
  • jQueryを使用して、ブロック要素の背景画像を別の画像に変更する方法について説明します。
  • 現行のPCサイトのHTMLをいじらずに、スマホ対応するために、動的に背景画像を変更したい場合には、jQueryを使うことができます。
  • 具体的な方法は、まずブロック要素の現在の背景画像を取得し、ファイル名を変更して新しい背景画像のURLを作成します。そして、jQueryの`css`メソッドを使って背景画像を変更します。

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんにちは。 >splitでは、途中に'.'が存在すると、うまくいかないこともあるんですね。 >そっか、indexOfを使えばいいんですね。 >勉強になります。 相対パスであれば画像の拡張子以外に'.'が入ることはほとんど無いと思いますが、URLの場合はドメインに必ず入ってきますのでその数が固定であればsplitかけて、後ろから見ていけばわかると思います。 単純に0と1要素で見ると、ドメインの.で区切られた文字になると思います。 今回は最後の'.'が画像の拡張子前ときめうちでの処理です。 *私のandroid端末では動作確認しています。

mc0816
質問者

お礼

LancerVIIさん 再解説ありがとうございます。 動作確認しました~ iosとandroid端末で期待通りできました。 毎度のことながら助かりました。 jQuery、知れば知るほど楽しいです。 今後も頑張ります。 また質問してしまう事が多々あるとは思いますが 今後もどうぞ宜しくお願いします。 本当に本当にありがとうございました。

その他の回答 (1)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 ==== 動作サンプル http://hppg.moe.hm/okwave/qa/q7372330/ 実際動かすと動かないのはおそらく var mainbg = $("#box").css("background-image") で取得したものが絶対パスになっているからだと思います。 取得したmainbgを見てみるとurl('http://xxx.xxx/xxx.png')とかになっていると思います。 (途中に'.'が存在するとファイル名以外のところでもsplitされるため) なので以下のようにしてみました。 $().ready ( function() { var mainbg = $('#box').css ( 'background-image' ); // 最後の.より前をv1へ var v1 = mainbg.substring(0,mainbg.lastIndexOf('.') ); // 最後の.より後ろをv2へ var v2 = mainbg.substring(mainbg.lastIndexOf('.') ); // 間に_smpを挿入したものをファイルパスとして与える $('#box').css ( 'background-image' , v1 + '_smp' + v2 ); });

mc0816
質問者

お礼

LancerVIIさん 今回もお世話になりました! 相変わらずの親切な解説とサンプル&素早い回答を ありがとうございます。 splitでは、途中に'.'が存在すると、うまくいかないこともあるんですね。 そっか、indexOfを使えばいいんですね。 勉強になります。 それで、実装してみて、 PC上のスマホシミュレーターでは期待通りにできました。 ですが、スマホの実機でまだ確認できていないのです。 まずは、取り急ぎ御礼したいと思いペンをとりました。 本当に本当にありがとうございました。

関連するQ&A

専門家に質問してみよう