* @name jQuery
* @cat Core
*/
-function jQuery(a,c) {
+jQuery = function(a,c) {
// Shortcut for document ready (because $(document).each() is silly)
if ( a && a.constructor == Function && jQuery.fn.ready )
// If so, execute it in context
if ( fn && fn.constructor == Function )
this.each(fn);
-}
+};
// Map over the $ in case of overwrite
if ( typeof $ != "undefined" )
* @test ok( $('#en').attr('lang') == "en", 'Check for lang attribute' );
* @test ok( $('#simon').attr('class') == "blog link", 'Check for class attribute' );
* @test ok( $('#name').attr('name') == "name", 'Check for name attribute' );
+ * @test ok( $('#text1').attr('name') == "action", 'Check for name attribute' );
+ * @test ok( $('#form').attr('action') == "formaction", 'Check for action attribute' );
*
* @name attr
* @type Object
* @test t( "Is Visible", "input:visible", ["text1","text2","radio1","radio2","check1","check2","name"] );
* @test t( "Is Hidden", "input:hidden", ["hidden1","hidden2"] );
*
+ * @test t( "Grouped Form Elements", "input[@name='foo[bar]']", ["hidden2"] );
+ *
+ * @test t( "All Children of ID", "#foo/*", ["sndp", "en", "sap"] );
+ * @test t( "All Children of ID with no children", "#firstUL/*", [] );
+ *
* @name $.find
* @type Array<Element>
* @private
// The regular expressions that power the parsing engine
parse: [
// Match: [@value='test'], [@foo]
- [ "\\[ *(@)S *([!*$^=]*) *Q\\]", 1 ],
+ "\\[ *(@)S *([!*$^=]*)Q\\]",
// Match: [div], [div p]
- [ "(\\[)Q\\]", 0 ],
+ "(\\[)Q\\]",
// Match: :contains('foo')
- [ "(:)S\\(Q\\)", 0 ],
+ "(:)S\\(Q\\)",
// Match: :even, :last-chlid
- [ "([:.#]*)S", 0 ]
+ "([:.#]*)S"
],
filter: function(t,r,not) {
var p = jQuery.parse;
for ( var i = 0; i < p.length; i++ ) {
- var re = new RegExp( "^" + p[i][0]
-
+ // get number for backreference
+ var br = 0;
+ if(p[i].indexOf('Q') != -1){
+ br = p[i].replace(/\\\(/g,'').match(/\(|S/g).length+1;
+ }
+ var re = new RegExp( "^" + p[i]
+
// Look for a string-like sequence
.replace( 'S', "([a-z*_-][a-z0-9_-]*)" )
// Look for something (optionally) enclosed with quotes
- .replace( 'Q', " *'?\"?([^'\"]*?)'?\"? *" ), "i" );
+ .replace( 'Q', " *('|\"|)([^'\"]*?)\\"+br+" *" ), "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]];
-
+ if(br == 4){
+ m = ["",m[1], m[3], m[2], m[5]];
+ } else if(br != 0) {
+ m.splice(br,1);
+ }
// Remove what we just matched
t = t.replace( re, "" );
var c = this.events[event.type];
+ var args = [].slice.call( arguments, 1 );
+ args.unshift( event );
+
for ( var j in c ) {
- if ( c[j].apply( this, [event] ) === false ) {
+ if ( c[j].apply( this, args ) === false ) {
event.preventDefault();
event.stopPropagation();
returnValue = false;
* @before <p>Hello</p><div><span>Hello Again</span></div><p>And Again</p>
* @result [ <p>Hello</p>, <p>And Again</p> ]
*
+ * @test isSet( $("#en").siblings().get(), q("sndp", "sap"), "Check for siblings" );
+ *
* @name siblings
* @type jQuery
* @cat DOM/Traversing
* @before <div><span>Hello</span></div><p class="selected">Hello Again</p><p>And Again</p>
* @result [ <p class="selected">Hello Again</p> ]
*
+ * @test isSet( $("#sndp").siblings("[code]").get(), q("sap"), "Check for filtered siblings (has code child element)" );
+ * @test isSet( $("#sndp").siblings("[a]").get(), q("en", "sap"), "Check for filtered siblings (has anchor child element)" );
+ *
* @name siblings
* @type jQuery
* @param String expr An expression to filter the sibling Elements with