我寫了一個Javascript事件監聽器來捕獲捕獲階段的點擊,執行一個動作,然後重複點擊觸發任何通常應該發生的代碼。如何阻止事件回調自行啓動?
var obj=document.getElementById('button');
obj.addEventListener('click', function(event){
event.stopPropagation();
console.log('Performing operation here');
otherOperation('ajax', function(){
obj.click();
});
}, true);
顯然這會創建一個無限循環的操作。我認爲這是最好的方法,因爲操作需要時間延遲,我不能繼續事件傳播,直到我得到另一個回調。
有沒有辦法檢測點擊是由我自己的回調函數執行的,因此忽略它?
我有一個理論,在操作完成後刪除事件監聽器,但它需要在某些情況下再次添加,這會產生大量代碼。
您確定您的事件處理程序將在所有其他以前連接的處理程序之前運行嗎?不知何故,我覺得這不會起作用 –
@hege_hegedus你是對的,它不是一個完美的解決方案!不過,在我的測試中,當我點擊* capture *而不是bubble時,它出現在我的用例頁面上的所有其他插件/東西之前。 – NoChecksum