// Define the jQuery Template plugin. This takes a textarea // value and converts it into an jQuery DOM elements (outside // of the current DOM) and returns it. It takes only one // argument: the name-value pairs of the values to replace // into the template. jQuery.fn.template = function( objValues ){ // Get a reference to the current jQuery stack. var jThis = this; // Get the value of the textarea. var strHTML = jThis.val(); // This will be our index variable for looping over the // values that were passed in. var strKey = ""; // Check to make sure we have a value string. If this is // not the right kind of jQuery stack, the HTML string will // be null. if (strHTML){ // Now that we have the proper value, we have to // replace in the mapped values. Loop over each // value that was passed in. for (strKey in objValues){ // Escape all the special values in the key so that // it can be used in a regular expression. strSafeKey = strKey.replace( new RegExp( "([\\[\\]\\.\\+\\*\\{\\}\\(\\)\\$\\?\\-])", "gi" ), "\\$1" ); // Replace the value. strHTML = strHTML.replace( new RegExp( "\\{" + strSafeKey + "\\}", "gi" ), objValues[ strKey ] ); } // At this point, our HTML will have fully replaced // values. Now, let's convert it into a jQuery DOM // element and return it. return( jQuery( strHTML ) ); } else { // Return empty jQuery stack. return( jQuery( [] ) ); } }