讀jQuery之九 一些瑕疵說明
更新時間:2011年06月21日 01:03:03 作者:
jQuery1.6.1 發(fā)布有一段時間了,發(fā)現(xiàn)一些冗余代碼,列出如下
1,bind 方法,最后一個參數(shù)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
應(yīng)修改為
// Add which for mousedown/mouseup : 1 === left; 2 === middle; 3 === right
3,data方法,定義了局部變量internalKey,但后續(xù)代碼仍然沿用jQuery.expando。
var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache,
4,jQuery.event.add方法,arguments改為e,apply改為call 更好一些。因為只會傳一個參數(shù):事件對象。
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,基于 “勿重復(fù)檢測瀏覽器” 原則,jQuery.event.add 以下代碼
if ( elem.addEventListener ) {
elem.addEventListener( type, eventHandle, false );
} else if ( elem.attachEvent ) {
elem.attachEvent( "on" + type, eventHandle );
}
應(yīng)該使用以下來替換
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中已經(jīng)有了jQuery.removeEvent,卻不知為何沒有jQuery.addEvent。
復(fù)制代碼 代碼如下:
// Handle object literals
if ( typeof type === "object" ) {
for ( var key in type ) {
this[ name ](key, data, type[key], fn);
}
return this;
}
2,注釋
復(fù)制代碼 代碼如下:
// Add which for click: 1 === left; 2 === middle; 3 === right
應(yīng)修改為
復(fù)制代碼 代碼如下:
// Add which for mousedown/mouseup : 1 === left; 2 === middle; 3 === right
3,data方法,定義了局部變量internalKey,但后續(xù)代碼仍然沿用jQuery.expando。
復(fù)制代碼 代碼如下:
var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache,
4,jQuery.event.add方法,arguments改為e,apply改為call 更好一些。因為只會傳一個參數(shù):事件對象。
復(fù)制代碼 代碼如下:
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,基于 “勿重復(fù)檢測瀏覽器” 原則,jQuery.event.add 以下代碼
復(fù)制代碼 代碼如下:
if ( elem.addEventListener ) {
elem.addEventListener( type, eventHandle, false );
} else if ( elem.attachEvent ) {
elem.attachEvent( "on" + type, eventHandle );
}
應(yīng)該使用以下來替換
復(fù)制代碼 代碼如下:
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中已經(jīng)有了jQuery.removeEvent,卻不知為何沒有jQuery.addEvent。
相關(guān)文章
jQuery插件Timelinr 實現(xiàn)時間軸特效
時間軸是依據(jù)時間順序,把一方面或多方面的事件串聯(lián)起來,形成相對完整的記錄體系,再運(yùn)用圖文的形式呈現(xiàn)給用戶,本文給大家收集了互聯(lián)網(wǎng)上的效果比較不錯的一款,分享給大家2015-10-10javascript開發(fā)中使用onpropertychange,oninput事件解決onchange事件的不足
用onpropertychange,oninput事件解決onchange事件的不足,需要的朋友可以參考下。2010-11-11jQuery 錨點跳轉(zhuǎn)滾動條平滑滾動一句話代碼
jQuery 錨點跳轉(zhuǎn)滾動條平滑滾動一句話代碼,需要的朋友可以參考下。2010-04-04JQuery里面的幾種選擇器 查找滿足條件的元素$("#控件ID")
JQuery里面的幾種選擇器 查找滿足條件的元素$("#控件ID"),使用jquery的朋友可以參考下。2011-08-08