Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 解析时,jQuery会忽略任何与';t表格和文档将删除表格标记_Javascript_Jquery_Dom_Html Table - Fatal编程技术网

Javascript 解析时,jQuery会忽略任何与';t表格和文档将删除表格标记

Javascript 解析时,jQuery会忽略任何与';t表格和文档将删除表格标记,javascript,jquery,dom,html-table,Javascript,Jquery,Dom,Html Table,不确定这是错误还是功能。当解析带有表元素的html时,jQuery会忽略非表元素 <tr><td>table data</td></tr> <div>div after will be ignored</div> 将相同的html传递到纯javascriptelement.innerHTML=html时 <tr><td>table data</td></tr> table

不确定这是错误还是功能。当解析带有表元素的html时,jQuery会忽略非表元素

<tr><td>table data</td></tr>
<div>div after will be ignored</div>
将相同的html传递到纯javascript
element.innerHTML=html

<tr><td>table data</td></tr>
table data
<div>div after will be ignored</div>
表格数据
之后的div将被忽略
在这里,它正在发挥作用


编辑:发布这篇文章之后,我意识到jQuery正在删除表元素,因为dom中的行为正好相反

首先,这不是一个有效的HTML

对。Jquery解析器将清除这些

如果仔细查看jquery,html函数在实际设置
innerHTML
之前使用parseHTML

而parseHTML正在调用一个buildFragment并删除字符串中的所有虚假元素

下面是buildFragment函数源代码的一部分

// Add nodes directly
            if ( jQuery.type( elem ) === "object" ) {
                jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );

            // Convert non-html into a text node
            } else if ( !rhtml.test( elem ) ) {
                nodes.push( context.createTextNode( elem ) );

            // Convert html into DOM nodes
            } else {
                tmp = tmp || safe.appendChild( context.createElement( "div" ) );

                // Deserialize a standard representation
                tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
                wrap = wrapMap[ tag ] || wrapMap._default;

                tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];

                // Descend through wrappers to the right content
                j = wrap[ 0 ];
                while ( j-- ) {
                    tmp = tmp.lastChild;
                }



// Manually add leading whitespace removed by IE
            if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
                nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[ 0 ] ) );
            }

            // Remove IE's autoinserted <tbody> from table fragments
            if ( !support.tbody ) {

                // String was a <table>, *may* have spurious <tbody>
                elem = tag === "table" && !rtbody.test( elem ) ?
                    tmp.firstChild :

                    // String was a bare <thead> or <tfoot>
                    wrap[ 1 ] === "<table>" && !rtbody.test( elem ) ?
                        tmp :
                        0;
在每个标签的内部

<!ELEMENT THEAD    - O (TR)+           -- table header -->
<!ELEMENT TFOOT    - O (TR)+           -- table footer --> 

如您所见,不允许直接使用div标记

然而,对于香草javascript,不会发生这种解析,浏览器直接解释提供给dom节点的字符串,并将其添加到文档中

删除元素的所有子元素,解析内容字符串并将结果节点指定为元素的子元素

<!ELEMENT THEAD    - O (TR)+           -- table header -->
<!ELEMENT TFOOT    - O (TR)+           -- table footer -->