質問: 既にイベントを登録済みのボタンに対して、 ConfirmでOKを押された場合にのみ、以降の処理を実行させるようにしたいです。 ``` // 割り込み処理はappendする形式にしたい //// 差し込み確認処理その1 $(".exec-confirm").on("click", function() { return confirm("実行しますか?"); }); //// 差し込み確認処理その2 $(".re-confirm").on("click", function() { return confirm("本当に実行しますか?"); }); // 基本動作 $("button").on("click", function() { console.log( $(this).attr("name").val() ); }); ``` ``` HOGEボタン FUGAボタン ``` HOGEボタン押下時の理想 1.実行しますか? -> キャンセルで処理終了 2.ログ出力 FUGAボタン押下時の理想 1.実行しますか? -> キャンセルで処理終了 2.本当に実行しますか? -> キャンセルで処理終了 3.ログ出力 現状 ・ConfirmのOKキャンセルどちらを選択しても、次のイベントが発生してしまいます。
回答: 同じエレメントについている別なイベントハンドラを止めるには、イベントオブジェクトを(例えば`e`のように)引数にとって、`e.stopImmediatePropagation();`を実行する必要があります(jQueryリファレンス)。 ``` $(".exec-confirm").on("click", function(e) { var result = confirm("実行しますか?"); if(result) return; e.stopImmediatePropagation(); return false; }); //// 差し込み確認処理その2 $(".re-confirm").on("click", function(e) { var result = confirm("実行しますか?"); if(result) return; e.stopImmediatePropagation(); return false; }); ```