※ ChatGPTを利用し、要約された質問です(原文:jQueryで背景画像を変更したい。)
jQueryで背景画像を変更する方法
このQ&Aのポイント
jQueryを使用して、ブロック要素の背景画像を別の画像に変更する方法について説明します。
現行のPCサイトのHTMLをいじらずに、スマホ対応するために、動的に背景画像を変更したい場合には、jQueryを使うことができます。
具体的な方法は、まずブロック要素の現在の背景画像を取得し、ファイル名を変更して新しい背景画像のURLを作成します。そして、jQueryの`css`メソッドを使って背景画像を変更します。
ブロック要素がありまして(下記<div id="box">boxの中身</div>)
そのブロック要素の背景画像(背景は動的に生成)を
別の画像に変えたいと思っています。
※現行のPCサイトのHTMLをいじらずに、スマホ対応しています
背景画像としては、
現在の背景画像⇒haikei.jpg
新しい背景画像⇒haikei_smp.jpg
↑こんな感じで
ファイル名の「haikei」の部分は動的に生成しているため可変ですが、
もとの画像に「_smp」が付く画像ファイルを用意して、
対応したい考えています。
特にイベントはなく、loadしたら読み込む予定でいて
以下のように書いたのですが、
PC上のシミュレーターではうまくいくものの、
実際のスマートフォンで確認したら実行できませんでした。
PC上ではエラーもなかったのですが、
背景画像が変わらないといった不具合です。
HTML
----------------------
<div id="box">boxの中身</div>
js
-----------------------
$(function(){
//mainbgに現在の背景画像を格納
var mainbg = $("#box").css("background-image")
//mainbgを(".")で分割し、bgImgに格納
bgImg = mainbg.split(".");
var img01 = bgImg[0];
var img02 = bgImg[1];
//「_smp」を付与し、smp_mainbgに格納
var smp_mainbg = img01 + "_smp." + img02 ;
//jQueryでbackground-imageを変更操作
$("#box").css("background-image" , smp_mainbg);
});
そもそも、この書き方がよいのか分かりませんが
もっとスマートの書き方がありましたら
別の方法でも、どうかご教授ください。
どうぞ宜しくお願いいたします。
お礼
LancerVIIさん 再解説ありがとうございます。 動作確認しました~ iosとandroid端末で期待通りできました。 毎度のことながら助かりました。 jQuery、知れば知るほど楽しいです。 今後も頑張ります。 また質問してしまう事が多々あるとは思いますが 今後もどうぞ宜しくお願いします。 本当に本当にありがとうございました。