diff --git a/src/jquery/coreTest.js b/src/jquery/coreTest.js
index efee85b35..be39a87d9 100644
--- a/src/jquery/coreTest.js
+++ b/src/jquery/coreTest.js
@@ -263,20 +263,6 @@ test("filter()", function() {
isSet( $("p").filter(["#ap", "#sndp"]).get(), q("ap", "sndp"), "filter(Array<String>)" );
});
-test("filter(String) - execute callback in fitting context", function() {
- expect(1);
- $("input").filter(":checked",function(i){
- ok( this == q("radio2", "check1")[i], "Filter elements, context" );
- });
-});
-
-test("filter(String) - execute callback in not-fitting context", function() {
- expect(1);
- $("#main > p#ap > a").filter("#foobar",function(){},function(i){
- ok( this == q("google","groups", "mark")[i], "Filter elements, else context" );
- });
-});
-
test("not(String)", function() {
ok($("#main > p#ap > a").not("#google").length == 2, "not('selector')")
isSet( $("p").not("#ap, #sndp").get(), q("firstp", "en", "sap", "first", "result"), "not('selector, selector')" );
@@ -564,4 +550,8 @@ test("removeClass(String) - add three classes and remove again", function() {
if ( div.get(i).className.match(/test|bar|foo/) ) pass = false;
}
ok( pass, "Remove multiple classes" );
+});
+
+test("removeAttr(String", function() {
+ ok( $('#mark').removeAttr("class")[0].className == "", "remove class" );
});
\ No newline at end of file
diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js
index 883bc3854..1efda2126 100644
--- a/src/jquery/jquery.js
+++ b/src/jquery/jquery.js
@@ -27,7 +27,7 @@ var jQuery = function(a,c) {
return jQuery(document).ready(a);
// Make sure that a selection was provided
- a = a || jQuery.context || document;
+ a = a || document;
// Watch for when a jQuery object is passed as the selector
if ( a.jquery )
@@ -48,20 +48,13 @@ var jQuery = function(a,c) {
}
// Watch for when an array is passed in
- this.get( a.constructor == Array || a.length && a != window && !a.nodeType && a[0] != undefined && a[0].nodeType ?
+ this.set( 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.merge( a, [] ) :
// Find the matching elements and save them for later
jQuery.find( a, c ) );
- // See if an extra function was provided
- var fn = arguments[ arguments.length - 1 ];
-
- // If so, execute it in context
- if ( fn && typeof fn == "function" )
- this.each(fn);
-
return this;
};
@@ -73,17 +66,14 @@ if ( typeof $ != "undefined" )
var $ = jQuery;
/**
- * This function accepts a string containing a CSS selector,
- * basic XPath, or raw HTML, which is then used to match a set of elements.
- * The HTML string is different from the traditional selectors in that
- * it creates the DOM elements representing that HTML string, on the fly,
- * to be (assumedly) inserted into the document later.
+ * This function accepts a string containing a CSS or
+ * basic XPath selector which is then used to match a set of elements.
*
* The core functionality of jQuery centers around this function.
* Everything in jQuery is based upon this, or uses this in some way.
* The most basic use of this function is to pass in an expression
* (usually consisting of CSS or XPath), which then finds all matching
- * elements and remembers them for later use.
+ * elements.
*
* By default, $() looks for DOM elements within the context of the
* current HTML document.
@@ -93,6 +83,28 @@ var $ = jQuery;
* @before
one
three
* @result [ two
]
*
+ * @example $("input:radio", document.forms[0])
+ * @desc Searches for all inputs of type radio within the first form in the document
+ *
+ * @example $("div", xml.responseXML)
+ * @desc This finds all div elements within the specified XML document.
+ *
+ * @name $
+ * @param String expr An expression to search with
+ * @param Element context (optional) A DOM Element, or Document, representing the base context.
+ * @cat Core
+ * @type jQuery
+ * @see $(Element)
+ * @see $(Element)
+ */
+
+/**
+ * This function accepts a string of raw HTML.
+ *
+ * The HTML string is different from the traditional selectors in that
+ * it creates the DOM elements representing that HTML string, on the fly,
+ * to be (assumedly) inserted into the document later.
+ *
* @example $("").appendTo("#body")
* @desc Creates a div element (and all of its contents) dynamically,
* and appends it to the element with the ID of body. Internally, an
@@ -100,22 +112,7 @@ var $ = jQuery;
* It is therefore both quite flexible and limited.
*
* @name $
- * @param String expr An expression to search with, or a string of HTML to create on the fly.
- * @cat Core
- * @type jQuery
- */
-
-/**
- * This function accepts a string containing a CSS selector, or
- * basic XPath, which is then used to match a set of elements with the
- * context of the specified DOM element, or document
- *
- * @example $("div", xml.responseXML)
- * @desc This finds all div elements within the specified XML document.
- *
- * @name $
- * @param String expr An expression to search with.
- * @param Element context A DOM Element, or Document, representing the base context.
+ * @param String html A string of HTML to create on the fly.
* @cat Core
* @type jQuery
*/
@@ -251,37 +248,34 @@ jQuery.fn = jQuery.prototype = {
* @param Number num Access the element in the Nth position.
* @cat Core
*/
+ get: function( num ) {
+ return num == undefined ?
+ // Return a 'clean' array
+ jQuery.merge( this, [] ) :
+
+ // Return just the object
+ this[num];
+ },
+
/**
* Set the jQuery object to an array of elements.
*
- * @example $("img").get([ document.body ]);
- * @result $("img").get() == [ document.body ]
+ * @example $("img").set([ document.body ]);
+ * @result $("img").set() == [ document.body ]
*
* @private
- * @name get
+ * @name set
* @type jQuery
* @param Elements elems An array of elements
* @cat Core
*/
- get: function( num ) {
- // Watch for when an array (of elements) is passed in
- if ( num && num.constructor == Array ) {
-
- // Use a tricky hack to make the jQuery object
- // look and feel like an array
- this.length = 0;
- [].push.apply( this, num );
-
- return this;
- } else
- return num == undefined ?
-
- // Return a 'clean' array
- jQuery.merge( this, [] ) :
-
- // Return just the object
- this[num];
+ set: function( array ) {
+ // Use a tricky hack to make the jQuery object
+ // look and feel like an array
+ this.length = 0;
+ [].push.apply( this, array );
+ return this;
},
/**
@@ -294,17 +288,12 @@ jQuery.fn = jQuery.prototype = {
* argument representing the position of the element in the matched
* set.
*
- * @example $("img").each(function(){
- * this.src = "test.jpg";
- * });
- * @before
- * @result
- *
* @example $("img").each(function(i){
- * alert( "Image #" + i + " is " + this );
+ * this.src = "test" + i + ".jpg";
* });
* @before
- * @result
+ * @result
+ * @desc Iterates over two images and sets their src property
*
* @name each
* @type jQuery
@@ -773,7 +762,7 @@ jQuery.fn = jQuery.prototype = {
end: function() {
if( !(this.stack && this.stack.length) )
return this;
- return this.get( this.stack.pop() );
+ return this.set( this.stack.pop() );
},
/**
@@ -796,7 +785,7 @@ jQuery.fn = jQuery.prototype = {
find: function(t) {
return this.pushStack( jQuery.map( this, function(a){
return jQuery.find(t,a);
- }), arguments );
+ }));
},
/**
@@ -817,7 +806,7 @@ jQuery.fn = jQuery.prototype = {
clone: function(deep) {
return this.pushStack( jQuery.map( this, function(a){
return a.cloneNode( deep != undefined ? deep : true );
- }), arguments );
+ }));
},
/**
@@ -872,7 +861,7 @@ jQuery.fn = jQuery.prototype = {
typeof t == "function" &&
jQuery.grep( this, t ) ||
- jQuery.filter(t,this).r, arguments );
+ jQuery.filter(t,this).r );
},
/**
@@ -906,7 +895,7 @@ jQuery.fn = jQuery.prototype = {
not: function(t) {
return this.pushStack( typeof t == "string" ?
jQuery.filter(t,this,false).r :
- jQuery.grep(this,function(a){ return a != t; }), arguments );
+ jQuery.grep(this,function(a){ return a != t; }) );
},
/**
@@ -952,13 +941,13 @@ jQuery.fn = jQuery.prototype = {
*/
add: function(t) {
return this.pushStack( jQuery.merge( this, typeof t == "string" ?
- jQuery.find(t) : t.constructor == Array ? t : [t] ), arguments );
+ jQuery.find(t) : t.constructor == Array ? t : [t] ) );
},
/**
* Checks the current selection against an expression and returns true,
- * if the selection fits the given expression. Does return false, if the
- * selection does not fit or the expression is not valid.
+ * if at least one element of the selection fits the given expression.
+ * Does return false, if no element fits or the expression is not valid.
*
* @example $("input[@type='checkbox']").parent().is("form")
* @before
@@ -985,13 +974,11 @@ jQuery.fn = jQuery.prototype = {
},
/**
- *
- *
* @private
* @name domManip
* @param Array args
* @param Boolean table
- * @param Number int
+ * @param Number dir
* @param Function fn The function doing the DOM manipulation.
* @type jQuery
* @cat Core
@@ -1030,28 +1017,11 @@ jQuery.fn = jQuery.prototype = {
* @type jQuery
* @cat Core
*/
- pushStack: function(a,args) {
- var fn = args && args[args.length-1];
- var fn2 = args && args[args.length-2];
-
- if ( fn && fn.constructor != Function ) fn = null;
- if ( fn2 && fn2.constructor != Function ) fn2 = null;
-
- if ( !fn ) {
- if ( !this.stack ) this.stack = [];
- this.stack.push( this.get() );
- this.get( a );
- } else {
- var old = this.get();
- this.get( a );
-
- if ( fn2 && a.length || !fn2 )
- this.each( fn2 || fn ).get( old );
- else
- this.get( old ).each( fn );
- }
-
- return this;
+ pushStack: function(a) {
+ if ( !this.stack )
+ this.stack = [];
+ this.stack.push( this.get() );
+ return this.set( a );
}
};
@@ -1207,6 +1177,7 @@ jQuery.extend({
* @type Object
* @cat Javascript
*/
+ // args is for internal usage only
each: function( obj, fn, args ) {
if ( obj.length == undefined )
for ( var i in obj )
@@ -1454,7 +1425,7 @@ jQuery.extend({
context = null;
// Set the correct context (if none is provided)
- context = context || jQuery.context || document;
+ context = context || document;
if ( t.constructor != String ) return [t];
@@ -2016,19 +1987,26 @@ jQuery.extend({
* This property is available before the DOM is ready, therefore you can
* use it to add ready events only for certain browsers.
*
- * See
- * jQBrowser plugin for advanced browser detection:
- *
* @example $.browser.msie
- * @desc returns true if the current useragent is some version of microsoft's internet explorer
+ * @desc Returns true if the current useragent is some version of microsoft's internet explorer
*
* @example if($.browser.safari) { $( function() { alert("this is safari!"); } ); }
* @desc Alerts "this is safari!" only for safari browsers
*
+ * @property
* @name $.browser
* @type Boolean
* @cat Javascript
*/
+
+/*
+ * Wheather the W3C compliant box model is being used.
+ *
+ * @property
+ * @name $.boxModel
+ * @type Boolean
+ * @cat Javascript
+ */
new function() {
var b = navigator.userAgent.toLowerCase();
@@ -2842,6 +2820,7 @@ jQuery.macros = {
* @cat DOM
*/
removeAttr: function( key ) {
+ jQuery.attr( this, key, "" );
this.removeAttribute( key );
},
@@ -2949,7 +2928,7 @@ jQuery.macros = {
* @cat DOM
*/
toggleClass: function( c ){
- jQuery.className[ jQuery.className.has(this,c) ? "remove" : "add" ](this,c);
+ jQuery.className[ jQuery.className.has(this,c) ? "remove" : "add" ](this, c);
},
/**