您好,欢迎访问一九零五行业门户网

读jQuery之九 一些瑕疵说明_jquery

1,bind 方法,最后一个参数fn是多余的
复制代码 代码如下:
// handle object literals
if ( typeof type === object ) {
for ( var key in type ) {
this[ name ](key, data, type[key], fn);
}
return this;
}
2,注释
复制代码 代码如下:
// add which for click: 1 === left; 2 === middle; 3 === right
应修改为
复制代码 代码如下:
// add which for mousedown/mouseup : 1 === left; 2 === middle; 3 === right
3,data方法,定义了局部变量internalkey,但后续代码仍然沿用jquery.expando。
复制代码 代码如下:
var internalkey = jquery.expando, getbyname = typeof name === string, thiscache,
4,jquery.event.add方法,arguments改为e,apply改为call 更好一些。因为只会传一个参数:事件对象。
复制代码 代码如下:
elemdata.handle = eventhandle = function( e ) {
// discard the second event of a jquery.event.trigger() and
// when an event is called after a page has unloaded
return typeof jquery !== undefined && (!e || jquery.event.triggered !== e.type) ?
jquery.event.handle.apply( eventhandle.elem, arguments ) :
undefined;
};
5,基于 “勿重复检测浏览器” 原则,jquery.event.add 以下代码
复制代码 代码如下:
if ( elem.addeventlistener ) {
elem.addeventlistener( type, eventhandle, false );
} else if ( elem.attachevent ) {
elem.attachevent( on + type, eventhandle );
}
应该使用以下来替换
复制代码 代码如下:
jquery.addevent = document.addeventlistener ?
function( elem, type, handle ) {
if ( elem.addeventlistener ) {
elem.addeventlistener( type, handle, false );
}
} :
function( elem, type, handle ) {
if ( elem.attactevent ) {
elem.attactevent( on + type, handle );
}
};
事实上,jquery中已经有了jquery.removeevent,却不知为何没有jquery.addevent。
其它类似信息

推荐信息