<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>test</title> <link rel="stylesheet" href="css/test_01.css"> </head> <body> <ul class="btn"> <li><a href="" data-val="ci">〇</a></li> <li><a href="" data-val = "tr">△</a></li> <li><a href="" data-val="sq">□</a></li> </ul> <ul class="items"> <li class="ci"><div class="box circle"></div></li> <li class="ci"><div class="box circle"></div></li> <li class="sq"><div class="box square"></div></li> <li class="tr"><div class="triangle"></div></li> <li class="tr"><div class="triangle"></div></li> </ul> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="js/test_01.js"></script> </body> </html>
css部分 css/test01.css
ul{ padding:0; display:flex; list-style: none; } ul.btn{ justify-content: center; } ul.btn li{ width:48px; text-align: center; margin-right:24px; } ul.btn li:last-child{ margin-right:0; } ul.btn a{ display:block; width:100%; text-decoration: none; color:#fff; background: dimgray; border-radius:8px; } ul.items{ justify-content: start; width:800px; margin:0 auto; margin-top:64px; } ul.items li{ margin-right: 48px; } .box{ width:50px; height:50px; } .triangle{ width: 0; height: 0; border-left: 25px solid transparent; border-right: 25px solid transparent; border-bottom: 50px solid yellow; } .circle{ border-radius: 50%; background:red; } .square{ background:blue; }
js部分 test01.js
$(function(){ $("ul.btn a").on("click",function(){ let filter = $(this).attr("data-val"); console.log(filter); $("ul.items li").each(function(){ $(this).fadeOut(1000,function(){ if($(this).hasClass(filter)){ $(this).fadeIn(1000); } }); }); return false; }) })
現在jqueryを学習中です。
〇△□の図形が表示されていてそれに見合ったボタンを押下すると今まで表示された図形がfadeOut後、対象の図形が表示されるようにしたいのですが、ボタンを押下時に今まで表示されていた図形がfadeoutする前に対象の図形が表示されていまいます。
fadeoutとfadeinをhideとshowに書き換えるとこれまで表示されている要素が非表示になってから対象の要素が表示されるようになります、どちらもコールバック関数内で処理しているのですが記述方法が間違っているのでしょうか。
ご教授お願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/18 09:51
2021/07/18 10:30