事件封装,跪求
求一个事件封装,跪求高手指点。
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);
}
------解决方案--------------------
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);
}