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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

Q&A

解決済

2回答

6974閲覧

複数ボタンで初回クリックと二回目以降のクリックの動作を変える方法について

test_87097

総合スコア45

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

0グッド

0クリップ

投稿2020/01/10 04:45

編集2020/01/10 05:01

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

js

1$("[id^=clickLeft]").click(function(){ 2 if ($(this).hasClass('first-click') == false) { 3 // 初回判定 4 // 左ボタン初回用の動作 5 $(this).addClass('first-click'); 6 } else { 7    // 二回目以降 8 // 左ボタン2回目用の動作 9 } 10 11}); 12$("[id^=clickRight]").click(function(){ 13 if ($(this).hasClass('first-click') == false) { 14 // 初回判定 15 // 右ボタン初回用の動作 16 $(this).addClass('first-click'); 17 } else { 18    // 二回目以降 19 // 右ボタン2回目用の動作 20 } 21}); 22 23 24<button type="button" id="clickLeft" data-suffix="0">左ボタン</button> 25<button type="button" id="clickRight" data-suffix="0">右ボタン</button>

行いたい動作としてはボタンが2つ存在して、初回のクリックと2回目以降のクリックでは行いたい動作を変更したいと考えています。
ただ、左ボタン、右ボタンどちらをクリックしたとしても初回判定として2回目以降の動作にいきたいのですが、
上記のコードですと、左→左だと初回、2回目になりますが左→右だと初回、初回となってしまいます。
左右のどちらのボタンをクリックしたとしても初回判定として2回目以降の動作を行うにはどのようにコードを書けばよいか
ご教授頂ければと思います。

以上、よろしくお願いします。

補足
左ボタンと右ボタンでは行いたい動作が違います。

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

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

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

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

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

guest

回答2

0

HTML

1<div> 2 <button~ 3 <button~ 4</div>

JavaScript

1 if ($(this).parent().hasClass('first-click') == false) { 2 // 初回判定 3 $(this).parent().addClass('first-click'); 4 } else { 5    // 二回目以降 6 }

親要素を用意して、親要素にfirst-clickをつけて判定してみては?

投稿2020/01/10 05:03

Masakin

総合スコア192

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

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

test_87097

2020/01/10 05:43

頂いたコード通りに作りましたらうまくいきました。ありがとうございました。
guest

0

ベストアンサー

たとえばこんな感じで

投稿2020/01/10 04:52

編集2020/01/10 05:07
yambejp

総合スコア114779

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

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

yambejp

2020/01/10 04:53

<script> $(function(){ $('.btn').on('click',function(){ if($(this).data('click')){ console.log('2回目以降'); }else{ console.log('1回目'); $('.btn').data('click',1); } }); }); </script> <button type="button" class="btn">左ボタン</button> <button type="button" class="btn">右ボタン</button>
test_87097

2020/01/10 04:58

ご回答ありがとうございます。 すいません、説明不足でした。 左ボタンと右ボタンでの動作は違うので、左ボタンと右ボタンのクラスをまとめるわけにはいかないのです。
yambejp

2020/01/10 05:11 編集

> 左ボタンと右ボタンのクラスをまとめるわけにはいかないのです クラスはグルーピング用につけただけです data-suffix="0"を利用してもよいでしょう。 CodePenの修正版はidで判断するバージョンにしてあります
test_87097

2020/01/10 05:42

理解できました。頂いたコード通りに作りましたら希望の動作になりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問