如何裝飾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:找到節點的事件處理程序
- 3. 節點刪除和事件處理程序
- 4. 將事件處理程序附加到節點語法
- 5. 點擊事件處理程序
- 6. 我如何裝飾命令處理程序類綁定Ninject
- 7. HTML事件處理程序與React事件處理程序
- 8. 事件處理程序是否應使用其代表進行裝飾?
- 9. 哪些事件處理程序附加到DOM節點 - 如何查找?
- 10. 如何同步事件處理程序
- 11. 如何釋放事件處理程序
- 12. 如何給處理程序或點擊事件的錨標記
- 13. 如何處理按鈕的點擊事件使用添加處理程序,刪除處理程序
- 14. 如何處理順序調用事件處理程序?
- 15. 事件處理程序訪問修飾符MFC vs C#WinForms
- 16. Vue.js鼠標事件處理程序修飾符
- 17. 節點及其子節點中的鼠標事件處理
- 18. 如何處理與Python裝飾
- 19. 如何處理交互裝飾器
- 20. Reactive extensions處理事件處理程序
- 21. 處理程序不處理事件
- 22. 如何跟蹤和處理節點中的事件
- 23. WPF:忽略上疊加/裝飾器的鼠標點擊,但處理MouseEnter事件
- 24. 如何處理由事件處理程序引發的域事件?
- 25. 在事件處理程序
- 26. JavaScript事件處理程序
- 27. 事件處理程序TabbedPanel
- 28. Javascript事件處理程序
- 29. BackgroundWorker事件處理程序
- 30. Elixir事件處理程序