jQuery を使用して実際の DOM ノードを作成できますが、それは DOM 内にはありません。では、jQuery はどのようにそれを行うのでしょうか? 最初にDOMで作成してから削除する可能性があると思います。
// here `el` is not a jQuery object
el = $('<div></div>')[0];
console.log(el.tagName); // "DIV"
console.log(el.nodeType); // "1"
jQuery を使用して実際の DOM ノードを作成できますが、それは DOM 内にはありません。では、jQuery はどのようにそれを行うのでしょうか? 最初にDOMで作成してから削除する可能性があると思います。
// here `el` is not a jQuery object
el = $('<div></div>')[0];
console.log(el.tagName); // "DIV"
console.log(el.nodeType); // "1"
document.createElement()
指定された要素を作成するためにjQueryを使用していると思います。このメソッドはノードを作成して返しますが、DOM にはアタッチしません。仕組みの詳細については、関連するMDN の記事を参照してください。
Jquery は、正規表現を使用して HTML 文字列を解析し、以下のコードを使用して dom 要素を作成します。
parseHTML: function( data, context, keepScripts ) {
if ( !data || typeof data !== "string" ) {
return null;
}
if ( typeof context === "boolean" ) {
keepScripts = context;
context = false;
}
context = context || document;
var parsed = rsingleTag.exec( data ),
scripts = !keepScripts && [];
// Single tag
if ( parsed ) {
return [ context.createElement( parsed[1] ) ];
}
parsed = jQuery.buildFragment( [ data ], context, scripts );
if ( scripts ) {
jQuery( scripts ).remove();
}
return jQuery.merge( [], parsed.childNodes );
}
このページでコードを調べる方が簡単かもしれません。
http://james.padolsey.com/jquery/#v=1.10.2&fn=jQuery.parseHTML