jQueryの9(いくつかの欠陥)を読む

2255 ワード


jQuery1.6.1リリースされてからしばらく経って、いくつかの冗長コードが見つかりました.以下のようにリストされています.
 
 
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以下のコード
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.
 
5,attrメソッドがstyle属性を取得する場合,IE 6/7/8はIE 9/Firefox/Safar/Chrome/Opera値と一致しない.IE 6/7/8でセミコロンが少なくなりました .次のように
<div style="color:red;">test</div>
<script type="text/javascript">
alert($('div').attr('style'));
</script>
 
 
継続的な更新...