すべてのボディクリックイベントにフックするWebページがあります。
if (0 == $('body').hasEventListener("click.custom").length) {
$('body').bind("click.custom", function(e) {
console.log(e.target);
});
}
このメソッドでクリックしたすべての要素を出力したいのですが、追加のイベントハンドラーがある場所で問題が発生しています。次のコードを検討してください。
<a href="www.stackoverflow.com" class="my-link">Click</a>
<script>
$(document).on("click", ".my-link", function(e) {
alert("not allowed to click this");
e.preventDefault();
});
</script>
最終的に発生するのは、preventDefault呼び出しが、カスタムイベントの実行を妨げることです。
ユーザーをリンクにリダイレクトするデフォルトのイベントを防止したいのですが、カスタムイベントを発生させたいのです。
もちろん、デフォルトが呼び出されないようにどこからでもすべてのイベントを手動でトリガーすることは可能ですが、そうするための一般的な方法はありますか?
ありがとう!