jQuery 소스 판독의removeAttr () 방법 분석
jQuery 원형 객체를 확장하는 방법:
jQuery.fn.extend({
//name, DOM 。
removeAttr: function( name ) {
// jQuery.fn , jQuery each jQuery , jQuery 。
return this.each(function() {
// jQuery removeAttr, DOM this name。
jQuery.removeAttr( this, name );
});
}
});
jQuery의 전역 방법removeAttr
// jQuery
jQuery.extend({
//elem DOM ,value 。
removeAttr: function( elem, value ) {
var name, propName,
i = 0,
//rnotwhite (/\S+/g)
// value " ", null
// value "title href", , , attrNames ["title", "href"]。
//match JavaScript , , , 。 。
attrNames = value && value.match( rnotwhite );
// attrNames null, DOM 1, if , , , 。
if ( attrNames && elem.nodeType === 1 ) {
// attrNames , ["title", "href"]
// while , , attrNames name, i 1, name , , , , name , 。
while ( (name = attrNames[i++]) ) {
// js "for" "class", "htmlFor" "className"。
propName = jQuery.propFix[ name ] || name;
//
if ( jQuery.expr.match.bool.test( name ) ) {
//getSetInput Input getAttribute("value")
//getSetAttribute
//!ruseDefault.test( name ) name checked selected ,
if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
// false
elem[ propName ] = false;
} else {
// ie9
// "default-checked" "defaultChecked", false
elem[ jQuery.camelCase( "default-" + name ) ] =
elem[ propName ] = false;
}
} else {
// , jQuery attr
jQuery.attr( elem, name, "" );
}
//getSetAttribute setAttribute , , setAttribute getAttribute , 。( ie6/7)
// getSetAttibute false, , , , 。
// DOM removeAttribute ,
elem.removeAttribute( getSetAttribute ? name : propName );
}
}
}
});
키워드 속성 수정
jQuery.extend({
propFix: {
"for": "htmlFor",
"class": "className"
}
});
jQuery.extend({
camelCase: function( string ) {
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
}
});
var nodeHook, boolHook,
attrHandle = jQuery.expr.attrHandle,
ruseDefault = /^(?:checked|selected)$/i,
getSetAttribute = support.getSetAttribute,
getSetInput = support.input;
// Setup
div = document.createElement( "div" );
div.setAttribute( "className", "t" );
div.innerHTML = " a";
a = div.getElementsByTagName("a")[ 0 ];
// First batch of tests.
select = document.createElement("select");
opt = select.appendChild( document.createElement("option") );
input = div.getElementsByTagName("input")[ 0 ];
a.style.cssText = "top:1px";
// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
support.getSetAttribute = div.className !== "t";
input getAttribute("value")
// Support: IE8 only
// Check if we can trust getAttribute("value")
input = document.createElement( "input" );
input.setAttribute( "value", "" );
support.input = input.getAttribute( "value" ) === "";
브리치 속성 검사 여부
booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
matchExpr = {
"bool": new RegExp( "^(?:" + booleans + ")$", "i" )
},
는 본고에서 기술한 바와 같이 여러분의 jQuery 프로그램 설계에 도움이 되었으면 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.