now, the events can be added as Jquery, very short. coz the function"smallize".
<div id="d1" style="width:200px;height:200px;background:gold;"></div>
<script type="text/javascript">
this.smallize = function (){
for(key in E.prototype.Event){
E.prototype[key] = E.prototype.Event[key];
E.prototype.Event = function(){
function _isEmptyObj(obj){
function _each(ary, callback){
for(var i=0,len=ary.length; i<len;){
callback(i, ary[i]) ? i=0 : i++;
function _remove(el, type){
var handler = el.listeners[type]['_handler_'];
el.removeEventListener(type, handler, false) :
el.detachEvent('on'+type, handler);
delete el.listeners[type];
if(_isEmptyObj(el.listeners)){
function add(el, type, fn){
el.listeners = el.listeners || {};
var listeners = el.listeners[type] = el.listeners[type] || [];
if(!listeners['_handler_']){
listeners['_handler_'] = function(e){
var evt = e || window.event;
for(var i=0,fn; fn=listeners[i++];){
el.addEventListener(type, listeners['_handler_'], false) :
el.attachEvent('on' + type, listeners['_handler_']);
function remove(el, type, fn){
if(!el.listeners) return;
var listeners = el.listeners && el.listeners[type];
_each(listeners, function(i, f){
return listeners.splice(i, 1);
if(listeners.length == 0){
function dispatch(el ,type){
var evt = document.createEvent('Event');
evt.initEvent(type,true,true);
var el = document.getElementById('d1');
function handler1(){alert('1');}
function handler2(){alert('2');}
function handler3(){alert('3');}
function handler4(){alert('4');}
function handler5(){alert('5');}
$.add(el, 'click', handler1);
$.add(el, 'click', handler2);
$.add(el, 'click', handler3);
$.add(el, 'click', handler4);
$.add(el, 'click', handler5);
$.remove(el, 'click', [handler1,handler2]);