2010-06-10 48 views

回答

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框架实际上不会为您的事件处理程序提供有关其他处理程序的大量信息。一般来说,处理这种关系是一种脆弱的模式,但是我想如果你用一个规范处理器设置的设计开始工作,它可以正常工作。

相关问题