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

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

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

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

jQuery

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

Q&A

解決済

2回答

2470閲覧

jQueryでボタンの複数回クリックの登録

shun_1110

総合スコア1

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2020/11/09 17:52

jQueryでボタンのクリックを押して1回目、2回目、3回目のクリックの動作を登録するコードを教えて欲しいです。4回目以降は反応しないようにしたいです。どうかお願いいたします。

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

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

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

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

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

miyabi_takatsuk

2020/11/09 19:25

自身で書いてみたソースコードを記載して下さい。
guest

回答2

0

shinji709 さんのHTMLで、以下のような方法も。

配列の破壊的メソッドを活用し、メモリに配慮するタイプ。

  1. イベントリスナはコールバック関数なので、配列に格納しておきます。
  2. shift() で取り出して順番に実行します。
  3. 残りのコールバック関数がなくなると、配列への再格納が必要になります。

javascript

1let cbLauncher = [ 2 function ( ev ) { 3 $("#fuga").text("1回目"); 4 }, 5 function ( ev ) { 6 $("#fuga").text("2回目"); 7 }, 8 function ( ev ) { 9 $("#fuga").text("3回目"); 10 } 11]; 12 13$('#hoge').on("click", cbLauncher.launch=function( evt ) { 14 15 // 異なる処理を順番に実行 16 let cb = cbLauncher.shift(); 17 if ( cb && "function" === typeof cb) cb( evt ); 18 19 // クリーンナップ 20 if ( !cbLauncher.length ) { 21 $('#hoge').off("click", cbLauncher.launch); 22 cbLauncher = null; // ガベージコレクタが回収してくれるかも(追記 23 //$("#fuga").text("unhandled click"); 24 } 25 26}); 27

ただし、4回目以降は無効化したいとのことなので、完全な クリーンナップ を考慮して、自らイベントリスナを解除します。
$().on("click", listener) で登録 / $().off("click", listener) で解除)

投稿2020/11/09 21:50

編集2020/11/09 21:57
AkitoshiManabe

総合スコア5434

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

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

shun_1110

2020/11/10 02:18

ご回答大変感謝致します。やってみたところ全く問題なく機能し解決できました。 ありがとうございました。
guest

0

ベストアンサー

11/10 06:09現在、質問文にコードが皆無なので以下HTMLを想定します。

HTML

1<button id="hoge">ボタン</button> 2<p id="fuga"></p>

以下のようにクロージャ使って書けば良いと思います。

JavaScript

1$('#hoge').click((function() { 2 let count = 0 3 return function() { 4 count++ 5 if (count < 4) $('#fuga').text(count + '回目') 6 } 7})())

1回目、2回目、3回目で処理を分けるには、上記コードのif (count < 4) $('#fuga').text(count + '回目')の部分を以下に差し替えて、それぞれの処理を書いて下さい。

JavaScript

1 if (count === 1) { 2 // 一回目の処理を書く 3 } else if (count === 2) { 4 // 二回目の処理を書く 5 } else if (count === 3) { 6 // 三回目の処理を書く 7 } else { 8 // 四回目以降 (何も書かない) 9 }

投稿2020/11/09 21:09

shinji709

総合スコア805

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

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

shun_1110

2020/11/10 02:19

ご回答大変感謝致します。やってみたところ全く問題なく機能し解決できました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問