A bunch of fixes for thead/tbody related bugs.

This commit is contained in:
John Resig 2006-08-17 03:08:13 +00:00
parent ec38c6086c
commit fe392e6a74

30
src/jquery/jquery.js vendored
View file

@ -726,7 +726,7 @@ jQuery.fn = jQuery.prototype = {
return this.each(function(){ return this.each(function(){
var obj = this; var obj = this;
if ( table && this.nodeName == "TABLE" ) { if ( table && this.nodeName == "TABLE" && a[0].nodeName != "THEAD" ) {
var tbody = this.getElementsByTagName("tbody"); var tbody = this.getElementsByTagName("tbody");
if ( !tbody.length ) { if ( !tbody.length ) {
@ -959,29 +959,35 @@ jQuery.extend({
for ( var i = 0; i < a.length; i++ ) { for ( var i = 0; i < a.length; i++ ) {
if ( a[i].constructor == String ) { if ( a[i].constructor == String ) {
if ( !a[i].indexOf("<tr") ) { var table = "";
var tr = true;
if ( !a[i].indexOf("<thead") || !a[i].indexOf("<tbody") ) {
table = "thead";
a[i] = "<table>" + a[i] + "</table>";
} else if ( !a[i].indexOf("<tr") ) {
table = "tr";
a[i] = "<table>" + a[i] + "</table>"; a[i] = "<table>" + a[i] + "</table>";
} else if ( !a[i].indexOf("<td") || !a[i].indexOf("<th") ) { } else if ( !a[i].indexOf("<td") || !a[i].indexOf("<th") ) {
var td = true; table = "td";
a[i] = "<table><tbody><tr>" + a[i] + "</tr></tbody></table>"; a[i] = "<table><tbody><tr>" + a[i] + "</tr></tbody></table>";
} }
var div = document.createElement("div"); var div = document.createElement("div");
div.innerHTML = a[i]; div.innerHTML = a[i];
if ( tr || td ) { if ( table ) {
div = div.firstChild.firstChild; div = div.firstChild;
if ( td ) div = div.firstChild; if ( table != "thead" ) div = div.firstChild;
if ( table == "td" ) div = div.firstChild;
} }
for ( var j = 0; j < div.childNodes.length; j++ ) for ( var j = 0; j < div.childNodes.length; j++ )
r.push( div.childNodes[j] ); r.push( div.childNodes[j] );
} else if ( a[i].jquery || a[i].length && !a[i].nodeType ) } else if ( a[i].jquery || a[i].length && !a[i].nodeType )
for ( var k = 0; k < a[i].length; k++ ) for ( var k = 0; k < a[i].length; k++ )
r.push( a[i][k] ); r.push( a[i][k] );
else if ( a[i] !== null ) else if ( a[i] !== null )
r.push( a[i].nodeType ? a[i] : document.createTextNode(a[i].toString()) ); r.push( a[i].nodeType ? a[i] : document.createTextNode(a[i].toString()) );
} }
return r; return r;
}, },