jQuery1.6.1 發佈有一段時間瞭,發現一些冗餘代碼,列出如下
1,bind 方法,最後一個參數fn是多餘的
view sourceprint?1 // Handle object literals
2 if ( typeof type === “object” ) {
3 for ( var key in type ) {
4 this[ name ](key, data, type[key], fn);
5 }
6 return this;
7 }
2,註釋
view sourceprint?1 // Add which for click: 1 === left; 2 === middle; 3 === right
應修改為
view sourceprint?1 // Add which for mousedown/mouseup : 1 === left; 2 === middle; 3 === right
3,data方法,定義瞭局部變量internalKey,但後續代碼仍然沿用jQuery.expando。
view sourceprint?1 var internalKey = jQuery.expando, getByName = typeof name === “string”, thisCache,
4,jQuery.event.add方法,arguments改為e,apply改為call 更好一些。因為隻會傳一個參數:事件對象。
view sourceprint?1 elemData.handle = eventHandle = function( e ) {
2 // Discard the second event of a jQuery.event.trigger() and
3 // when an event is called after a page has unloaded
4 return typeof jQuery !== “undefined” && (!e || jQuery.event.triggered !== e.type) ?
5 jQuery.event.handle.apply( eventHandle.elem, arguments ) :
6 undefined;
7
8 };
5,基於 “勿重復檢測瀏覽器” 原則,jQuery.event.add 以下代碼
view sourceprint?1 if ( elem.addEventListener ) {
2 elem.addEventListener( type, eventHandle, false );
3
4 } else if ( elem.attachEvent ) {
5 elem.attachEvent( “on” + type, eventHandle );
6 }
應該使用以下來替換
view sourceprint?01 jQuery.addEvent = document.addEventListener ?
02 function( elem, type, handle ) {
03 if ( elem.addEventListener ) {
04 elem.addEventListener( type, handle, false );
05 }
06 } :
07 function( elem, type, handle ) {
08 if ( elem.attactEvent ) {
09 elem.attactEvent( “on” + type, handle );
10 }
11 };
事實上,jQuery中已經有瞭jQuery.removeEvent,卻不知為何沒有jQuery.addEvent。
持續更新…