mirror of
https://github.com/jquery/jquery.git
synced 2025-01-10 18:24:24 +00:00
Manipulation: Restrict the tbody search to child nodes
For performance, use a querySelectorAll path instead of Javascript iteration. http://codepen.io/anon/pen/vywJjx?editors=1010 Fixes gh-3439 Closes gh-3463
This commit is contained in:
parent
9d822bc1c1
commit
efdb8a46e4
@ -47,11 +47,12 @@ var
|
|||||||
rscriptTypeMasked = /^true\/(.*)/,
|
rscriptTypeMasked = /^true\/(.*)/,
|
||||||
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
|
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
|
||||||
|
|
||||||
|
// Prefer a tbody over its parent table for containing new rows
|
||||||
function manipulationTarget( elem, content ) {
|
function manipulationTarget( elem, content ) {
|
||||||
if ( jQuery.nodeName( elem, "table" ) &&
|
if ( jQuery.nodeName( elem, "table" ) &&
|
||||||
jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
|
jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
|
||||||
|
|
||||||
return elem.getElementsByTagName( "tbody" )[ 0 ] || elem;
|
return jQuery( ">tbody", elem )[ 0 ] || elem;
|
||||||
}
|
}
|
||||||
|
|
||||||
return elem;
|
return elem;
|
||||||
|
@ -2730,6 +2730,26 @@ QUnit.test( "Make sure col element is appended correctly", function( assert ) {
|
|||||||
assert.strictEqual( table.find( "td" ).width(), 150 );
|
assert.strictEqual( table.find( "td" ).width(), 150 );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
QUnit.test( "Make sure tr is not appended to the wrong tbody (gh-3439)", function( assert ) {
|
||||||
|
assert.expect( 1 );
|
||||||
|
|
||||||
|
var htmlOut,
|
||||||
|
htmlIn =
|
||||||
|
"<thead><tr><td>" +
|
||||||
|
"<table><tbody><tr><td>nested</td></tr></tbody></table>" +
|
||||||
|
"</td></tr></thead>",
|
||||||
|
newRow = "<tr><td>added</td></tr>",
|
||||||
|
htmlExpected = htmlIn.replace( "</thead>", "</thead>" + newRow ),
|
||||||
|
table = supportjQuery( "<table/>" ).html( htmlIn ).appendTo( "#qunit-fixture" )[ 0 ];
|
||||||
|
|
||||||
|
jQuery( table ).append( newRow );
|
||||||
|
|
||||||
|
// Lowercase and replace spaces to remove possible browser inconsistencies
|
||||||
|
htmlOut = table.innerHTML.toLowerCase().replace( /\s/g, "" );
|
||||||
|
|
||||||
|
assert.strictEqual( htmlOut, htmlExpected );
|
||||||
|
} );
|
||||||
|
|
||||||
QUnit.test( "Insert script with data-URI (gh-1887)", 1, function( assert ) {
|
QUnit.test( "Insert script with data-URI (gh-1887)", 1, function( assert ) {
|
||||||
Globals.register( "testFoo" );
|
Globals.register( "testFoo" );
|
||||||
Globals.register( "testSrcFoo" );
|
Globals.register( "testSrcFoo" );
|
||||||
|
Loading…
Reference in New Issue
Block a user