如何裝飾DOM節點,以便添加事件處理程序,但在新的處理程序中,您可以調用以前的處理程序?如何裝飾DOM節點的事件處理程序?
0
A
回答
0
我假設你是綁定事件的方式element.onclick = function() {};
。
是的,你可以做一個包裝前面的事件處理函數,並依次執行它們,例如:
function addEvent(el, event, handler) {
var oldEvent = el['on'+event];
if (typeof oldEvent != 'function') {
el['on'+event] = handler;
} else {
el['on'+event] = function() {
oldEvent();
handler();
}
}
}
var el = document.getElementById('el');
addEvent(el, 'click', function() { alert('1'); });
addEvent(el, 'click', function() { alert('2'); });
檢查上面的例子here。
0
這取決於你如何將你的處理器,當然,但這裏有一個老式的方法:
function addClickHandler(nodeId, handler) {
var node = document.getElementById(nodeId), old = node.onclick;
node.onclick = function() {
handler(old);
}
}
你的處理函數會檢查它的參數,看它是否不爲空。
你當然可以像你想要的那樣喜歡這裏。請注意,大多數Javascript框架實際上不會爲您的事件處理程序提供有關其他處理程序的大量信息。一般來說,處理這種關係是一種脆弱的模式,但是我想如果你用一個規範處理器設置的設計開始工作,它可以正常工作。
相關問題
- 1. 如何獲得jQuery事件處理程序中的父節點?
- 2. 如何獲取YUI事件處理程序中的DOM節點?
- 3. YUI:找到節點的事件處理程序
- 4. 節點上的d3事件處理程序不在HTML DOM中
- 5. 來自節點的JavaFx呼叫事件處理程序
- 6. Form OnClick事件處理程序 - 如何重疊其他事件處理程序?
- 7. 節點刪除和事件處理程序
- 8. 將事件處理程序附加到節點語法
- 9. JavaScript事件處理程序刪除節點
- 10. PHP點擊事件處理程序
- 11. 點擊事件處理程序
- 12. 點擊事件處理程序
- 13. 我如何裝飾命令處理程序類綁定Ninject
- 14. HTML事件處理程序與React事件處理程序
- 15. 的事件處理程序
- 16. 事件處理程序是否應使用其代表進行裝飾?
- 17. 哪些事件處理程序附加到DOM節點 - 如何查找?
- 18. 如何釋放事件處理程序
- 19. 如何同步事件處理程序
- 20. 如何模擬事件處理程序?
- 21. 如何關閉事件處理程序?
- 22. 如何中斷事件處理程序
- 23. 如何給處理程序或點擊事件的錨標記
- 24. 如何編寫用stream_body裝飾器包裝的torando處理程序的測試?
- 25. 如何處理順序調用事件處理程序?
- 26. 如何處理按鈕的點擊事件使用添加處理程序,刪除處理程序
- 27. 當用戶點擊ASP.Net TreeView的節點時使用的事件處理程序
- 28. 防止父節點也處理事件
- 29. 事件處理程序訪問修飾符MFC vs C#WinForms
- 30. Vue.js鼠標事件處理程序修飾符