質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

621閲覧

jQuery サムネイルクリックで画像切替時、3回目のクリック以降classが外れない

hiro..

総合スコア79

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/08/03 05:57

いつもお世話になっております。

現在、サムネイルをクリックしてメイン画像を切り替える実装をしております。
画像切替時のアニメーションをクラス(.scroll_on)のつけ外しで管理したく、以下のコードを書きました。

codepen

しかし、サムネイルを2回クリックまでは理想の挙動になりますが、
3回目から.scroll_onが外れないためアニメーションが動作いたしません。

HTML

1<div class="bl_garally_imgUnit"> 2 <div id="mainImg" class="bl_garally_mainImg"> 3 <img src="https://placehold.jp/1500x800.png" alt="メインイメージ"> 4 </div> 5 <ul id="thumbs" class="bl_garally_thumbUnit"> 6 <li class="current"><img src="https://placehold.jp/1500x800.png" alt="サムネイル"></li> 7 <li><img src="https://placehold.jp/57d2eb/ffffff/1500x800.png" alt="サムネイル"></li> 8 <li><img src="https://placehold.jp/578beb/ffffff/1500x800.png" alt="サムネイル"></li> 9 </ul> 10 </div> 11 12 <script src="https://code.jquery.com/jquery-3.3.1.js"></script>

jQuery

1$(document).ready(function () { 2 $('#thumbs img').on('click', function () { 3 //mainに切り替えるimgのsrc取得 4 img = $(this).attr('src'); 5 6 //currentクラス付け替え 7 $('#thumbs li').removeClass('current'); 8 $(this).parent().addClass('current'); 9 10 $('#mainImg img').attr('src', img); 11 $('#mainImg').addClass('scroll_on'); 12 $('#mainImg').delay(1000).queue(function () { 13 $('#mainImg').removeClass('scroll_on'); 14 }); 15 }); 16});

CSS

1@keyframes scroll_img { 2 100% { 3 transform: translateX(100%); 4 } 5} 6 7.bl_garally_mainImg { 8 overflow: hidden; 9 position: relative; 10 &.scroll_on::before { 11 animation: scroll_img 1.5s cubic-bezier(.4, 0, .2, 1) forwards; 12 background: #fff; 13 bottom: 0; 14 content: ''; 15 left: 0; 16 pointer-events: none; 17 position: absolute; 18 right: 0; 19 top: 0; 20 z-index: 1; 21 } 22} 23 24.bl_garally_thumbUnit { 25 display: flex; 26 justify-content: flex-end; 27 margin-top: 10px; 28 & img { 29 // float: right; 30 width: 80px; 31 margin-left: 10px; 32 } 33 & li.current img{ 34 border: 2px solid #333; 35 } 36} 37.bl_garally_imgUnit { 38 max-width: 500px; 39 margin: auto; 40} 41img { 42 width: 100%; 43 height: auto; 44} 45

$('#thumbs img')クリックイベントの最初に$('#mainImg').removeClass('scroll_on');を
追加してみても挙動は変わらず、また動的に追加した項目でもありません。

どうすれば3回目以降も.scroll_onが外れるようにできますでしょうか。

何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

キューを終了する必要があります

jquery

1$('#mainImg').removeClass('scroll_on').dequeue();

もしくはdelaysetTimeoutに変更

jquery

1setTimeout(function() { 2 $('#mainImg').removeClass('scroll_on'); 3},1000);

投稿2020/08/03 08:04

akihiro3

総合スコア955

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiro..

2020/08/03 08:49

できました!!ありがとうございますm(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問