* @cat Core
*/
var jQuery = function(a,c) {
+ // If the context is global, return a new object
+ if ( window == this )
+ return new jQuery(a,c);
+
// Make sure that a selection was provided
a = a || document;
+ // HANDLE: $(function)
// Shortcut for document ready
// Safari reports typeof on DOM NodeLists as a function
if ( typeof a == "function" && !a.nodeType && a[0] == undefined )
- return jQuery(document)[ jQuery.fn.ready ? "ready" : "load" ]( a );
-
- // Watch for when a jQuery object is passed as the selector
- if ( a.jquery )
- return jQuery( jQuery.makeArray( a ) );
-
- // Watch for when a jQuery object is passed at the context
- if ( c && c.jquery )
- return jQuery( c ).find(a);
-
- // If the context is global, return a new object
- if ( window == this )
- return new jQuery(a,c);
-
+ return new jQuery(document)[ jQuery.fn.ready ? "ready" : "load" ]( a );
+
// Handle HTML strings
if ( typeof a == "string" ) {
+ // HANDLE: $(html) -> $(array)
var m = /^[^<]*(<.+>)[^>]*$/.exec(a);
- if ( m ) a = jQuery.clean( [ m[1] ] );
+ if ( m )
+ a = jQuery.clean( [ m[1] ] );
+
+ // HANDLE: $(expr)
+ else
+ return new jQuery( c ).find( a );
}
+
+ return this.setArray(
+ // HANDLE: $(array)
+ a.constructor == Array && a ||
- // Watch for when an array is passed in
- return this.setArray( a.constructor == Array || a.length && a != window && !a.nodeType && a[0] != undefined && a[0].nodeType ?
- // Assume that it is an array of DOM Elements
- jQuery.makeArray( a ) :
+ // HANDLE: $(arraylike)
+ // Watch for when an array-like object is passed as the selector
+ (a.jquery || a.length && a != window && !a.nodeType && a[0] != undefined && a[0].nodeType) && jQuery.makeArray( a ) ||
- // Find the matching elements and save them for later
- jQuery.find( a, c ) );
+ // HANDLE: $(*)
+ [ a ] );
};
// Map over the $ in case of overwrite
for ( var prop in key )
jQuery.attr(
type ? this.style : this,
- prop, jQuery.parseSetter(key[prop])
+ prop, jQuery.prop(this, prop, key[prop], type)
);
// See if we're setting a single key/value style
- else {
- // convert ${this.property} to function returnung that property
+ else
jQuery.attr(
type ? this.style : this,
- key, jQuery.parseSetter(value)
+ key, jQuery.prop(this, key, value, type)
);
- }
}) :
// Look for the case where we're accessing a style value
*/
/**
- * Set the text contents of all matched elements. This has the same
- * effect as html().
+ * Set the text contents of all matched elements.
+ *
+ * Similar to html(), but escapes HTML (replace "<" and ">" with their
+ * HTML entities.
*
- * @example $("p").text("Some new text.");
+ * If stripTags argument is set to true, HTML is stripped.
+ *
+ * @example $("p").text("<b>Some</b> new text.");
+ * @before <p>Test Paragraph.</p>
+ * @result <p><b>Some</b> new text.</p>
+ * @desc Sets the text of all paragraphs.
+ *
+ * @example $("p").text("<b>Some</b> new text.", true);
* @before <p>Test Paragraph.</p>
* @result <p>Some new text.</p>
* @desc Sets the text of all paragraphs.
* @name text
* @type String
* @param String val The text value to set the contents of the element to.
+ * @param Boolean stripTags (optional) Wheather to strip or only escape tags
* @cat DOM/Attributes
*/
- text: function(e) {
- // A surprisingly high number of people expect the
- // .text() method to do this, so lets do it!
+ text: function(e, stripTags) {
if ( typeof e == "string" )
- return this.html( e );
+ return this.html( stripTags ? e.replace(/<\/?[^>]+>/gi, '') : e.replace(/</g, "<").replace(/>/g, ">") );
e = e || this;
var t = "";
if ( fn.apply( obj[i], args || [i, obj[i]] ) === false ) break;
return obj;
},
+
+ prop: function(elem, key, value){
+ // Handle executable functions
+ return value.constructor == Function &&
+ value.call( elem, val ) || value;
+ },
className: {
add: function( elem, c ){
return r;
},
- parseSetter: function(value) {
- if( typeof value == "string" && value.charAt(0) == "$" ) {
- var m = value.match(/{(.*)}$/);
- if ( m && m[1] ) {
- value = new Function( "return " + m[1] );
- }
- }
- return value;
- },
-
attr: function(elem, name, value){
var fix = {
"for": "htmlFor",
selected: "selected"
};
- // get value if a function is provided
- if ( value && typeof value == "function" ) {
- value = value.apply( elem );
- }
-
// IE actually uses filters for opacity ... elem is actually elem.style
if ( name == "opacity" && jQuery.browser.msie && value != undefined ) {
// IE has trouble with opacity if it does not have layout