jQuery.extend({
clean: function( elems, context, flagment, scripts ) {
// 変数を宣言
var i, j, elem, tag, Wrap, Depth, ; ( !context || typeof context.createDocumentFragment === "未定義" ) {
0; (elem = elems[i]) != null; i ) {
// elem が数値の場合は変換します文字列に変換します 🎜> elem = ""; Continue;
}
// HTML 文字列を D に変換しますOM ノード
// 配列項目 (文字列) を DOM ノード
に変換します if ( typeof elem = == "string" ) {
テキスト ノード
if ( !rhtml.test( elem ) ) {
elem = context.createTextNode( elem );
これは #document-fragment タイプであり、ie9 より下です。ブラウザでは、safe は HTMLDocument タイプのノードであり、nodeNames 配列は空です。
col,embed ,hr, img、input、link、meta、paramのラベルに加えて、
// ラベルの開始と終了を行うラベルの末尾までのラベル
elem = ELEPLACE (rxhtmltag, "< $ 1>< $ 2>");
lem)| = wrap [0];
div.innerhtml = wrap [1] elem wrap [2];
//右の深さに移動
1。例: パーセル要素の最初のレイヤーを含みます)
While (深さ--) {
DIV = DIV.LastChild;
if ( ! jQuery.support.tbody ) {
// 文字列は
、*可能性* 偽(伪造的)
// 判断文字串中否か空tbody标签
hasBody = rtbody.test(elem);
// 最も外側のラベルがtableで、tbodyが手動でテーブルに追加されていない場合、
🎜> tbody = tag === "table" && !hasBody ?
div.firstChild && div.firstChild.childNodes:
// 文字列が裸の または
/ 空の THEAD または TFOOT タグが 1 つだけある場合文字列
// 変数 tBody は div.childNodes " && !hasBody ?
for ( j = tbody.length - 1; j >gt;= 0 ; --j ) {
tfoot タグ
if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
空のテーブルタグを自動的にクリア Joined tbody
tbody [ j ].parentNode.removeChild( tbody [ j ] );
// IEEはinnerhtmlが使用されるときにリーディングホワイトスペースを完全に殺します;
// elem が DOM ノード (テキスト ノード) の場合
if ( elem.nodeType ) {
ret.push( elem );
}
// 内のノードをマージします返された配列
{
.merge( ret, m );
= null ;
// ラジオとチェックボックスのチェックをデフォルトにリセットします。 他のタグに挿入した後の 1 つのボタン、選択された状態は失敗します (次のコードはこのバグを修正します)
if (! Jquery.support.appendchecked) {
for (i = 0; (elem = 0; (elem = 0; (elem = 0; elem = 0; ret [i])!= null;
// 指定されたドキュメント フラグメントに要素を追加します
// ret 配列内の各 DOM ノードを指定されたドキュメント フラグメントに挿入します
// dom ノード内のスクリプト ノードを抽出し、ret 配列に追加します、位置は元の親要素のインデックス位置の後です
if ( flagment ) {
// 各スクリプト要素の特別な処理
handleScript = function( elem ) {
// かどうかを確認しますExecutable
// ELEM 要素が存在しないか、Type 値が JavaScript または ECMAScript の場合
if (! Elem.type || RScripttype.test (elem.type)) {
// SCR を切り離し、スクリプト配列 (指定されている場合) またはフラグメントに保存します
// 処理されたことを示す true を返します
return scripts ?
scripts.parent Node?elem.parentNode .removeChild ( elem ) : elem ) :
fragment.appendChild( = ret[i]) != null; {
handleembedded scripts
// elem 要素をドキュメントフラグメントに追加し、埋め込みスクリプトを処理します(script タグ要素)
flagment.appendChild( elem );
if ( typeof elem.getElement sByTagName !== "unknown ") {> // Handlescript Dom を変更するため、jquery.merge を使用して enterSureスナップショット反復
jstags = jquery.grep (jQuery.merge ([], Elem.GetelementsBytagnam e ("script")), Handlescript) ;
// スクリプトを祖先の後の ret に接続し、インデックスをそれ以降に進めますそれらは ret.splice.apply (ret, [i 1, 0].concat( jsTags ) );
}
}
return ret;
}
});