2つのHTMLイベントの発信元が同じであることを確認するにはどうすればよいですか?私が必要としているのは、クリックイベントを1回だけ処理することです(クリックのstopPropogationは「ドロップダウン、モーダルなどに熱狂的ではない」ため、stopPropogationなしで)
originalEventによる比較(jQueryを使用)if (event.originalEvent != processedEvent.originalEvent)
はうまく機能しますが、バニラjsでも同じことをしたいと思います。
同じことをするための便利な純粋なjsメソッドがありますか?
var processedEvent = null;
$("#myButton").click(
function(event){
console.log("this should be processed once")
processedEvent = event;
}
)
$("#myPanel").click(
function(event){
if (event.originalEvent == processedEvent.originalEvent)
console.log("nice. we are going to ingore event")
else
console.log("error. event processed second time")
processedEvent=null;
}
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="myPanel">
<button id="myButton">Click Me jQuery</button>
</div>
</div>
PreventDefaultは、これを行うためのかなり標準的な方法です。event.preventDefault()
最も内側のハンドラーを呼び出してから、外側のハンドラーでif (!event.isDefaultPrevented()) {
jqueryまたはvanillajsを確認する必要がありますif (!event.defaultPrevented) {
。
のようなフラグとしてカスタムプロパティをイベントオブジェクトに追加しevent._customWasHandled = true
、後のハンドラーでそれらのプロパティを確認できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加