I'd like to propose that the jQuery() function accept a simple new syntax to allow it to create simple text nodes. If the string argument begins with an apostrophe, then treat the rest of the argument as plain text and return a jQuery object that wraps a single text node.
I ask for this because I was trying to do this: $("§").prependTo("h1"); Then I realized that since my string doesn't contain any angle brackets it is being treated as a selector rather than as a string of HTML, and I have to write this: $(document.createTextNode("§")).prependTo("h1"); I don't know how valuable this feature would be, but I've attached a simple (and barely tested) patch to implement it. With the patch, the code above gets a single apostrophe added to it and becomes: $("'§").prependTo("h1"); David --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-dev@googlegroups.com To unsubscribe from this group, send email to jquery-dev+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---
Index: core.js =================================================================== --- core.js (revision 6415) +++ core.js (working copy) @@ -17,7 +17,7 @@ // A simple way to check for HTML strings or ID strings // (both of which we optimize for) - quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/, + quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$|^'(.*)$/, // Is it a simple selector isSimple = /^.[^:#\[\.,]*$/, @@ -51,24 +51,28 @@ // Handle HTML strings if ( typeof selector === "string" ) { - // Are we dealing with HTML string or an ID? + // Are we dealing with HTML string or an ID or a text node? match = quickExpr.exec( selector ); // Verify a match, and that no context was specified for #id - if ( match && (match[1] || !context) ) { + if ( match && (match[1] || match[4] || !context) ) { // HANDLE: $(html) -> $(array) if ( match[1] ) { selector = jQuery.clean( [ match[1] ], context ); - // HANDLE: $("#id") + // HANDLE: $("#id") and $("'text") } else { - elem = document.getElementById( match[3] ); + if ( match[3] ) { + elem = document.getElementById( match[3] ); - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem && elem.id !== match[3] ) { - return rootjQuery.find( selector ); + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem && elem.id !== match[3] ) { + return rootjQuery.find( selector ); + } + } else { + elem = document.createTextNode( match[4] ); } // Otherwise, we inject the element directly into the jQuery object