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

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

新規登録して質問してみよう
ただいま回答率
85.48%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

解決済

1回答

1038閲覧

Bootstrap Toggleで多重発火してしまう

mochi_ponyo

総合スコア14

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

0グッド

0クリップ

投稿2018/09/21 01:25

前提・実現したいこと

ひとつのチェックボックスをクリックすることで、その他すべてのチェックボックスをON/OFFしたいです。普通のチェックボックスではなく、Bootstrap Toggleを使用したいです。

発生している問題

2回ずつイベントが発生してしまいます。

該当のソースコード

html

1<input type="checkbox" class="chkAll" name="chkAll" data-toggle="toggle"> 2 3<br/> 4<input type="checkbox" class="chkOne" name="chk1" data-toggle="toggle"> 5<input type="checkbox" class="chkOne" name="chk2" data-toggle="toggle"> 6<input type="checkbox" class="chkOne" name="chk3" data-toggle="toggle">

javascript

1$(function(){ 2 $('.chkAll').on('change', function(){ 3 var thisValue = $(this).prop('checked'); 4 alert('chkAll change '+thisValue); 5 $('.chkOne').prop('checked', thisValue).change(); 6 }); 7 $('.chkOne').on('change', function(){ 8 var thisValue = $(this).prop('checked'); 9 var thisName = $(this).attr('name'); 10 alert('chkOne change '+thisName+thisValue); 11 }); 12});

こちらに動かせるコードがあります。
https://jsfiddle.net/namitan/aq9Laaew/229671/

試したこと

チェックボックスからdata-toggle="toggle"を外して普通のチェックボックスにしてみると、1回ずつイベントが発生し正常に動作します。

Bootstrap Toggleを使う場合はなにか別のやり方が必要なのでしょうか?詳しい方、よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Bootstrapの場合は、bootstrapToggle()を使えばよかったかと思います。
なので、以下のようなコードだけでいいのではないでしょうか?
(stateを取るところはもっといい方法があるかもしれません)

js

1$(function(){ 2 $('.chkAll').on('change', function(){ 3 var thisValue = $(this).prop('checked'); 4 var state = thisValue ? 'on' : 'off'; 5 $('.chkOne').bootstrapToggle(state); 6 }); 7});

投稿2018/09/21 02:11

編集2018/09/21 02:11
hasue

総合スコア155

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

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

mochi_ponyo

2018/09/21 02:17

回答ありがとうございます! bootstrapToggle()を使うと1回ずつになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問