读jQuery之九 一些瑕疵说明_Javascript教程-查字典教程网
读jQuery之九 一些瑕疵说明
读jQuery之九 一些瑕疵说明
发布时间:2016-12-30 来源:查字典编辑
摘要:1,bind方法,最后一个参数fn是多余的复制代码代码如下://Handleobjectliteralsif(typeoftype==="o...

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。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类