前提・実現したいこと
「jQuery標準デザイン講座」のキャプション表示を作成したいのですが、「undefined」になってしまいます。
打ち間違いは見当たらないようなのでなぜなのか気になります。
どうかご教授よろしくお願いいたします。
発生している問題・エラーメッセージ
console.logで特にこれらの領域に関するエラーは発生しておりません
該当のソースコード
HTML
1 2<section class="section-title" id="style"> 3 <div class="content-wrapper"> 4<h2 class="section-title">Style</h2> 5<div class="style-wrapper"> 6<ul> 7 8 <li class="style-item"><img src="images/style02-min.jpg" alt="大人キュートなベリーショート" class="style-img"></li> 9 <li class="style-item"><img src="images/style03-min.jpg" alt="かわいくて大人気!甘えんぼなガーリースタイル" class="style-img"></li> 10 <li class="style-item"><img src="images/style04-min.jpg" alt="愛されゆるふわガール" class="style-img"></li> 11 <li class="style-item"><img src="images/style05-min.jpg" alt="ボリューミーで女性らしいシルエット" class="style-img"></li> 12 <li class="style-item"><img src="images/style06-min.jpg" alt="ナチュラル清楚な美人に" class="style-img"></li> 13 <li class="style-item"><img src="images/style07-min.jpg" alt="さっぱりエネルギー溢れる活力のある女性" class="style-img"></li> 14 <li class="style-item"><img src="images/style08-min.jpg" alt="エネルギッシュさにオトナらしさもプラス" class="style-img"></li> 15 <li class="style-item"><img src="images/style09-min.jpg" alt="カントリーチックな最先端スタイル" class="style-img"></li> 16 <li class="style-item"><img src="images/style10-min.jpg" alt="定番のさらさらストレート" class="style-img"></li> 17 <li class="style-item"><img src="images/style11-min.jpg" alt="小動物感漂うふわふわ感癒されること間違いなし" class="style-img"></li> 18 <li class="style-item"><img src="images/style01-min.jpg" alt="お父さんのスタイリングもお任せください" class="style-img"></li> 19</ul> 20</div> 21<a href="#"><img src="images/linesend_black-min.png" alt="" class="line_btn"></a> 22 </div> 23</section> 24
該当のソースコード
SCSS
1/*style*/ 2#style{ 3main li{ 4 position:relative; 5 6 width:300px; 7 height:300px; 8 color:$cWhite; 9} 10 11/*キャプション部分*/ 12/*今はないが後からjQueryにより生成される*/ 13/*今はないがhoverした時に画像の大きさいっぱいに重なる要素になるキャプションを表示するための領域となる*/ 14main div{ 15 position:absolute; 16 display: none; 17 width:100%; 18 height:100%; 19 padding:20px; 20 background:rgba(17,179,179,.7); 21 top:0; 22left:0; 23box-sizing:border-box;} 24 25/*アニメーションように10pxずらしておく*/ 26/*今はないが後からjQueryにより生成される 上記のdivの中に入れるキャプションの本文になる*/ 27main p { 28 position:relative; 29 top:10px; 30} 31}
該当のソースコード
js
1$(function () { 2 //画像のキャプション表示 3//li最後の要素にdivを追加 4$("li").append("<div>"); 5//そのなかにdiv 6$("div").each(function() { 7//画像のキャプションを取得 8//自分(div)からみて親要素(li)の子要素(img)のalt属性 9//$(this).parent().children("img").attr("alt"); 10//それを取得したキャプション用にテキストをp要素としてdiv要素内におさめる 11$(this).html("<p>" + $(this).parent().children("img").attr("alt") + "</p>"); 12}); 13 //マウスオーバーした時の処理 14 /* $("li").hover(function () { 15 //マウスオーバー時の処理 16//フェードイン 17 $(this).children("div").stop().fadeIn(300); 18 //キャプションのテキスト位置:10pxから0pxへ移動 19 $(this).children("div").children("p").stop().animate({ "top": 0 }, 300); 20 21 //マウスアウト時の処理 22 }, function () { 23 24 }); */ 25}); 26
試したこと
■見本コードと誤字脱字がないか見比べる
→特に見当たらない様子。
■コメントアウトして原因箇所を探ってみる
→一行ずつコメントアウトしてみたところ、<div>を生成するところ、<img>のalt属性を取得してくるところ(単体のコード)までは特に問題なく画像も表示されているが、以下の箇所からこの問題が発生することからここに問題があるのではないかと推測しています。
$(this).html("<p>" + $(this).parent().children("img").attr("alt") + "</p>");
補足情報(FW/ツールのバージョンなど)
OS:Windows
エディタ:VScode
ブラウザ:クローム
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/14 07:36
2021/07/14 08:17
2021/07/15 06:26