stopPropigationを使用する必要があることは理解していますが、onClick関数からイベントへの参照を取得するにはどうすればよいですか。また、イベントが要素にどのように関連付けられているかを確認するにはどうすればよいですか。だから私はこのような簡単なボタンを持っています:
<button class="btn btn-default" onclick="addRoleToReportClicked()">
関数は次のようになります。
function addRoleToReportClicked() {
$('#addRoleDiv').show();
}
とても簡単。そして、うまく働いていました。Unitl仕事からコードを更新しました。これでdivが表示されますが、他の処理、つまりページ全体の再読み込みに進みます。
Firefoxを使用していますが、ボタンに「バブリング」イベントハンドラーと「DOM0」イベントハンドラーが含まれていることがわかります。それがどのようにしてそこに到達したのか知りたいのですが、もっと重要なのは2つの質問です。
addRoleToReportClicked()関数でこれを停止するにはどうすればよいですか?(Propogationを停止できると思いますが、イベントを処理するにはどうすればよいですか?
これらのイベントリスナーを追加しているコードを見つける簡単な方法はありますか?デバッグを試しましたが、何も表示されませんでした。20以上のjsファイルと数千行のコードを調べて見つけたくありません。しかし、私は開発者を追い詰めて撃ちたいと思っています。
更新
私はこれを試しました:
$("#addRoleDivButton").unbind("click").on("click", function(e){
e.cancelBubble = true;
e.stopPropagation();
e.bubbles = false;
$('#addRoleDiv').show();
});
どれもうまくいきませんでした。フォーム送信のアイデアを考えて、ページ上の他のすべてのボタンが正常に機能していることに気付きましたが、これはfromの中にありました。そこで、タグを「ボタン」から「a」に変更しましたが、問題なく動作します。誰かがフォームタグ内のすべてのボタンにsubmit()を添付しました。送信を停止するにはどうすればよいですか?
バブリングを止める方法はたくさんありますが、最も人気のある2つの方法は-
伝播を停止します-
function addRoleToReportClicked(e) {
e.stopPropagation();
$('#addRoleDiv').show();
}
または、他のハンドラーのバインドを解除します-
<button class="btn btn-default btn-1">
$(".btn-1").unbind("click").on("click", function(){
$('#addRoleDiv').show();
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加