如何装饰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鼠标事件处理程序修饰符