读书人

事件封装跪求

发布时间: 2012-04-12 15:46:35 作者: rapoo

求一个事件封装,跪求高手指点。
on : function(node, eventType, handler) {
node = typeof node == 'string' ? document.getElementById(node) : node;
if (document.all)
node.attachEvent('on' + eventType, handler);
else
node.addEventListener(eventType, handler, false);
}

想在回调handler里加入自己的参数,具体不知道实现在的方法。

自己试写了一下,但是总感觉不太对劲。
on : function(node, eventType, param, scope, callback) {
node = typeof node === 'string' ? document.getElementById(node) : node;
if (document.all)
node.attachEvent('on' + eventType, callback);
else
node.addEventListener(eventType, function(event){
var scope = scope || window;
var param = param;
param.unshift(event);
callback.call(scope,param);
}, false);
}


[解决办法]

JScript code
        var on = function(node, eventType, param, callback) {            node = typeof node === 'string' ? document.getElementById(node) : node;            if(node.addEventListener){                node.addEventListener(eventType, function(event){                    event.data = param;                    callback.call(node, event);                }, false);            }else{                node.attachEvent('on' + eventType, function(){                    event.data = param;                    callback.call(node, event);                });            }        }
[解决办法]
on : function(node, eventType, param, scope, callback) {
node = typeof node === 'string' ? document.getElementById(node) : node;

function innerCallback()
{
var scope = scope || window;
var param = param;
callback.apply(scope,param);
}

if (document.all)
node.attachEvent('on' + eventType, innerCallback);
else
node.addEventListener(eventType, function(event){
innerCallback(event);
}, false);
}

读书人网 >JavaScript

热点推荐