- for ( var i = 0; i < a.length; i++ ) {
- if ( a[i].constructor == String ) {
-
- if ( !a[i].indexOf("<tr") ) {
- var tr = true;
- a[i] = "<table>" + a[i] + "</table>";
- } else if ( !a[i].indexOf("<td") || !a[i].indexOf("<th") ) {
- var td = true;
- a[i] = "<table><tbody><tr>" + a[i] + "</tr></tbody></table>";
- }
-
- var div = document.createElement("div");
- div.innerHTML = a[i];
-
- if ( tr || td ) {
- div = div.firstChild.firstChild;
- if ( td ) div = div.firstChild;
- }
-
- for ( var j = 0; j < div.childNodes.length; j++ )
- r.push( div.childNodes[j] );
- } else if ( a[i].jquery || a[i].length && !a[i].nodeType )
- for ( var k = 0; k < a[i].length; k++ )
- r.push( a[i][k] );
- else if ( a[i] !== null )
- r.push( a[i].nodeType ? a[i] : document.createTextNode(a[i].toString()) );
- }
- return r;
- },
-
- expr: {
- "": "m[2]== '*'||a.nodeName.toUpperCase()==m[2].toUpperCase()",
- "#": "a.getAttribute('id')&&a.getAttribute('id')==m[2]",
- ":": {
- // Position Checks
- lt: "i<m[3]-0",
- gt: "i>m[3]-0",
- nth: "m[3]-0==i",
- eq: "m[3]-0==i",
- first: "i==0",
- last: "i==r.length-1",
- even: "i%2==0",
- odd: "i%2",
-
- // Child Checks
- "first-child": "jQuery.sibling(a,0).cur",
- "last-child": "jQuery.sibling(a,0).last",
- "only-child": "jQuery.sibling(a).length==1",
-
- // Parent Checks
- parent: "a.childNodes.length",
- empty: "!a.childNodes.length",
-
- // Text Check
- contains: "(a.innerText||a.innerHTML).indexOf(m[3])>=0",
-
- // Visibility
- visible: "a.type!='hidden'&&jQuery.css(a,'display')!='none'&&jQuery.css(a,'visibility')!='hidden'",
- hidden: "a.type=='hidden'||jQuery.css(a,'display')=='none'||jQuery.css(a,'visibility')=='hidden'",
-
- // Form elements
- enabled: "!a.disabled",
- disabled: "a.disabled",
- checked: "a.checked"
- },
- ".": "jQuery.className.has(a,m[2])",
- "@": {
- "=": "z==m[4]",
- "!=": "z!=m[4]",
- "^=": "!z.indexOf(m[4])",
- "$=": "z.substr(z.length - m[4].length,m[4].length)==m[4]",
- "*=": "z.indexOf(m[4])>=0",
- "": "z"
- },
- "[": "jQuery.find(m[2],a).length"
- },
-
- token: [
- "\\.\\.|/\\.\\.", "a.parentNode",
- ">|/", "jQuery.sibling(a.firstChild)",
- "\\+", "jQuery.sibling(a).next",
- "~", function(a){
- var r = [];
- var s = jQuery.sibling(a);
- if ( s.n > 0 )
- for ( var i = s.n; i < s.length; i++ )
- r.push( s[i] );
- return r;
- }
- ],
-
- find: function( t, context ) {
- // Make sure that the context is a DOM Element
- if ( context && context.nodeType == undefined )
- context = null;
-
- // Set the correct context (if none is provided)
- context = context || jQuery.context || document;
-
- if ( t.constructor != String ) return [t];
-
- if ( !t.indexOf("//") ) {
- context = context.documentElement;
- t = t.substr(2,t.length);
- } else if ( !t.indexOf("/") ) {
- context = context.documentElement;
- t = t.substr(1,t.length);
- // FIX Assume the root element is right :(
- if ( t.indexOf("/") >= 1 )
- t = t.substr(t.indexOf("/"),t.length);
- }
-
- var ret = [context];
- var done = [];
- var last = null;
-
- while ( t.length > 0 && last != t ) {
- var r = [];
- last = t;
-
- t = jQuery.trim(t).replace( /^\/\//i, "" );
-
- var foundToken = false;
-
- for ( var i = 0; i < jQuery.token.length; i += 2 ) {
- var re = new RegExp("^(" + jQuery.token[i] + ")");
- var m = re.exec(t);
+ for ( var i = 0, al = a.length; i < al; i++ ) {
+ var arg = a[i];
+ if ( typeof arg == "string" ) { // Convert html string into DOM nodes
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var s = jQuery.trim(arg), s3 = s.substring(0,3), s6 = s.substring(0,6),
+ div = document.createElement("div"), wrap = [0,"",""];
+
+ if ( s.substring(0,4) == "<opt" ) // option or optgroup
+ wrap = [1, "<select>", "</select>"];
+ else if ( s6 == "<thead" || s6 == "<tbody" || s6 == "<tfoot" )
+ wrap = [1, "<table>", "</table>"];
+ else if ( s3 == "<tr" )
+ wrap = [2, "<table><tbody>", "</tbody></table>"];
+ else if ( s3 == "<td" || s3 == "<th" ) // <thead> matched above
+ wrap = [3, "<table><tbody><tr>", "</tr></tbody></table>"];
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + s + wrap[2];
+ while ( wrap[0]-- ) div = div.firstChild;