if ( m ) a = jQuery.clean( [ m[1] ] );
// Watch for when an array is passed in
- this.get( a.constructor == Array || a.length && a[0].nodeType ?
- // Assume that it's an array of DOM Elements
+ this.get( a.constructor == Array || a.length && a[0] != undefined && a[0].nodeType ?
+ // Assume that it is an array of DOM Elements
jQuery.merge( a, [] ) :
// Find the matching elements and save them for later
* @param Object value The value to set the property to.
*/
css: function( key, value ) {
- return this.attr( key, value, "css" );
+ return this.attr( key, value, "curCSS" );
},
/**
* @type jQuery
* @param String type An event type
*/
- trigger: function( type ) {
- jQuery.event.trigger( this, type );
+ trigger: function( type, data ) {
+ jQuery.event.trigger( type, data, this );
}
};
this.length ? this[0][n] : null :
this.attr( n, h );
};
- }
-
- var css = "width,height,top,left,position,float,overflow,color,background".split(",");
-
+ };
+
+ var css = "width,height,top,left,position,float,overflow,color,background".split(",");
+
for ( var i in css ) new function() {
var n = css[i];
jQuery.fn[ i ] = function(h) {
return h == undefined ?
- this.length ? jQuery.css( this[0], n ) : null :
+ ( this.length ? jQuery.css( this[0], n ) : null ) :
this.css( n, h );
};
- }
+ };
}
return p == "height" ? oHeight : oWidth;
}
-
+
+ return jQuery.curCSS( e, p );
+ },
+
+ curCSS: function(e,p,force) {
var r;
- if (e.style[p])
+ if (!force && e.style[p])
r = e.style[p];
else if (e.currentStyle)
r = e.currentStyle[p];
contains: "(a.innerText||a.innerHTML).indexOf(m[3])>=0",
// Visibility
- visible: "jQuery.css(a,'display')!='none'&&jQuery.css(a,'visibility')!='hidden'",
- hidden: "jQuery.css(a,'display')=='none'||jQuery.css(a,'visibility')=='hidden'",
+ 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",
find: function( t, context ) {
// Make sure that the context is a DOM Element
- if ( context && context.getElementsByTagName == undefined )
+ if ( context && context.nodeType == undefined )
context = null;
// Set the correct context (if none is provided)
} else
return "";
},
+
+ // The regular expressions that power the parsing engine
+ parse: [
+ // Match: [@value='test'], [@foo]
+ [ "\\[ *(@)S *([!*$^=]*) *Q\\]", 1 ],
+
+ // Match: [div], [div p]
+ [ "(\\[)Q\\]", 0 ],
+
+ // Match: :contains('foo')
+ [ "(:)S\\(Q\\)", 0 ],
+
+ // Match: :even, :last-chlid
+ [ "([:.#]*)S", 0 ]
+ ],
filter: function(t,r,not) {
// Figure out if we're doing regular, or inverse, filtering
var g = not !== false ? jQuery.grep :
function(a,f) {return jQuery.grep(a,f,true);};
- // Look for a string-like sequence
- var str = "([a-zA-Z*_-][a-zA-Z0-9_-]*)";
-
- // Look for something (optionally) enclosed with quotes
- var qstr = " *'?\"?([^'\"]*)'?\"? *";
-
- while ( t && /^[a-zA-Z\[*:.#]/.test(t) ) {
- // Handles:
- // [@foo], [@foo=bar], etc.
- var re = new RegExp("^\\[ *@" + str + " *([!*$^=]*) *" + qstr + "\\]");
- var m = re.exec(t);
-
- // Re-organize the match
- if ( m ) m = ["", "@", m[2], m[1], m[3]];
-
- // Handles:
- // [div], [.foo]
- if ( !m ) {
- re = new RegExp("^(\\[)" + qstr + "\\]");
- m = re.exec(t);
- }
-
- // Handles:
- // :contains(test), :not(.foo)
- if ( !m ) {
- re = new RegExp("^(:)" + str + "\\(" + qstr + "\\)");
- m = re.exec(t);
- }
-
- // Handles:
- // :foo, .foo, #foo, foo
- if ( !m ) {
- re = new RegExp("^([:.#]*)" + str);
- m = re.exec(t);
+ while ( t && /^[a-z[({<*:.#]/i.test(t) ) {
+
+ var p = jQuery.parse;
+
+ for ( var i = 0; i < p.length; i++ ) {
+ var re = new RegExp( "^" + p[i][0]
+
+ // Look for a string-like sequence
+ .replace( 'S', "([a-z*_-][a-z0-9_-]*)" )
+
+ // Look for something (optionally) enclosed with quotes
+ .replace( 'Q', " *'?\"?([^'\"]*)'?\"? *" ), "i" );
+
+ var m = re.exec( t );
+
+ if ( m ) {
+ // Re-organize the match
+ if ( p[i][1] )
+ m = ["", m[1], m[3], m[2], m[4]];
+
+ // Remove what we just matched
+ t = t.replace( re, "" );
+
+ break;
+ }
}
-
- // Remove what we just matched
- t = t.replace( re, "" );
// :not() is a special case that can be optomized by
// keeping it out of the expression list