tuiHoneyPot

front and back end of my TUI honeypot
Log | Files | Refs | README

init.js (3345B)


      1 // Initialize a jQuery object
      2 define( [
      3 	"../core",
      4 	"../var/document",
      5 	"../var/isFunction",
      6 	"./var/rsingleTag",
      7 
      8 	"../traversing/findFilter"
      9 ], function( jQuery, document, isFunction, rsingleTag ) {
     10 
     11 "use strict";
     12 
     13 // A central reference to the root jQuery(document)
     14 var rootjQuery,
     15 
     16 	// A simple way to check for HTML strings
     17 	// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)
     18 	// Strict HTML recognition (trac-11290: must start with <)
     19 	// Shortcut simple #id case for speed
     20 	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
     21 
     22 	init = jQuery.fn.init = function( selector, context, root ) {
     23 		var match, elem;
     24 
     25 		// HANDLE: $(""), $(null), $(undefined), $(false)
     26 		if ( !selector ) {
     27 			return this;
     28 		}
     29 
     30 		// Method init() accepts an alternate rootjQuery
     31 		// so migrate can support jQuery.sub (gh-2101)
     32 		root = root || rootjQuery;
     33 
     34 		// Handle HTML strings
     35 		if ( typeof selector === "string" ) {
     36 			if ( selector[ 0 ] === "<" &&
     37 				selector[ selector.length - 1 ] === ">" &&
     38 				selector.length >= 3 ) {
     39 
     40 				// Assume that strings that start and end with <> are HTML and skip the regex check
     41 				match = [ null, selector, null ];
     42 
     43 			} else {
     44 				match = rquickExpr.exec( selector );
     45 			}
     46 
     47 			// Match html or make sure no context is specified for #id
     48 			if ( match && ( match[ 1 ] || !context ) ) {
     49 
     50 				// HANDLE: $(html) -> $(array)
     51 				if ( match[ 1 ] ) {
     52 					context = context instanceof jQuery ? context[ 0 ] : context;
     53 
     54 					// Option to run scripts is true for back-compat
     55 					// Intentionally let the error be thrown if parseHTML is not present
     56 					jQuery.merge( this, jQuery.parseHTML(
     57 						match[ 1 ],
     58 						context && context.nodeType ? context.ownerDocument || context : document,
     59 						true
     60 					) );
     61 
     62 					// HANDLE: $(html, props)
     63 					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
     64 						for ( match in context ) {
     65 
     66 							// Properties of context are called as methods if possible
     67 							if ( isFunction( this[ match ] ) ) {
     68 								this[ match ]( context[ match ] );
     69 
     70 							// ...and otherwise set as attributes
     71 							} else {
     72 								this.attr( match, context[ match ] );
     73 							}
     74 						}
     75 					}
     76 
     77 					return this;
     78 
     79 				// HANDLE: $(#id)
     80 				} else {
     81 					elem = document.getElementById( match[ 2 ] );
     82 
     83 					if ( elem ) {
     84 
     85 						// Inject the element directly into the jQuery object
     86 						this[ 0 ] = elem;
     87 						this.length = 1;
     88 					}
     89 					return this;
     90 				}
     91 
     92 			// HANDLE: $(expr, $(...))
     93 			} else if ( !context || context.jquery ) {
     94 				return ( context || root ).find( selector );
     95 
     96 			// HANDLE: $(expr, context)
     97 			// (which is just equivalent to: $(context).find(expr)
     98 			} else {
     99 				return this.constructor( context ).find( selector );
    100 			}
    101 
    102 		// HANDLE: $(DOMElement)
    103 		} else if ( selector.nodeType ) {
    104 			this[ 0 ] = selector;
    105 			this.length = 1;
    106 			return this;
    107 
    108 		// HANDLE: $(function)
    109 		// Shortcut for document ready
    110 		} else if ( isFunction( selector ) ) {
    111 			return root.ready !== undefined ?
    112 				root.ready( selector ) :
    113 
    114 				// Execute immediately if ready is not present
    115 				selector( jQuery );
    116 		}
    117 
    118 		return jQuery.makeArray( selector, this );
    119 	};
    120 
    121 // Give the init function the jQuery prototype for later instantiation
    122 init.prototype = jQuery.fn;
    123 
    124 // Initialize central reference
    125 rootjQuery = jQuery( document );
    126 
    127 return init;
    128 
    129 } );