我贴段不完整的
复制内容到剪贴板
代码:
/**
*给指定元素增加监听,触发时执行一定的操作
*示例:
*var callBack=function(e,obj){alert(obj.id);};
*BX.Event.addListener('sample','click',callBack);
*这么在sample元素点击的时候将弹出它的id也就是sample
*@param {String||Array||Object} el 代操作对象的id,对象本身,id数组,对象数组;
*@param {String} eventName 事件名称,比如click,load,mouseover,mouseout等
*@param {Function} func(_ev,_scope) 事件触发的方法,其中e为出发的事件对象,_scope为响应该对象的元素对象如div,window等
*/
addListener:function(objs,eventName,func,range){
var _run=function(el){
var _scope=el;
var _fn=function(e){
var _ev=e||window.event;
//传递相应事件的元素对象
if(range){
func.apply(range,[_ev,_scope])
}
else
{
func(_ev,_scope);
}
};
if (!P.Event._cache[el])
{
P.Event._cache[el]=[];
}
/*防止重复绑定同样的事件*/
if (P.Event._cache[el][func])
{
//return false;
}
P.Event._cache[el][func]=_fn;
if(el.attachEvent){
el.attachEvent('on'+eventName,_fn);
}else if(el.addEventListener){
el.addEventListener(eventName,_fn,false);
}
else
{
el['on'+eventName] = _fn;
}
};
this._batch(objs,_run);
},
removeListener:function(objs,eventName,func)
{
var _run=function(el)
{
if(el.detachEvent)
{
el.detachEvent('on'+eventName,P.Event._cache[el][func]);
}
else if(el.removeEventListener)
{
el.removeEventListener(eventName,P.Event._cache[el][func],false);
}
else
{
el['on'+eventName] = null;
}
P.Event._cache[el][func]=null;
}
this._batch(objs,_run);
}
}