jQuery = function(a,c) {
// Shortcut for document ready (because $(document).each() is silly)
- if ( a && a.constructor == Function && jQuery.fn.ready )
+ if ( a && typeof a == "function" && jQuery.fn.ready )
return jQuery(document).ready(a);
// Make sure that a selection was provided
var fn = arguments[ arguments.length - 1 ];
// If so, execute it in context
- if ( fn && fn.constructor == Function )
+ if ( fn && typeof fn == "function" )
this.each(fn);
};
* var result = $('#first').append('<b>buga</b>');
* ok( result.text() == defaultText + 'buga', 'Check if text appending works' );
*
+ * @test reset();
+ * var expected = "Try them out: bla ";
+ * $('#first').append(" ");
+ * $('#first').append("bla ");
+ * ok( expected == $('#first').text(), "Check for appending of spaces" );
+ *
* @name append
* @type jQuery
* @param String html A string of HTML, that will be created on the fly and appended to the target.
t.constructor == Boolean &&
( t ? this.get() : [] ) ||
- t.constructor == Function &&
+ typeof t == "function" &&
jQuery.grep( this, t ) ||
jQuery.filter(t,this).r, arguments );
} else {
var old = this.get();
this.get( a );
- if ( fn.constructor == Function )
+ if ( typeof fn == "function" )
this.each( fn );
this.get( old );
}
o.className += ( o.className ? " " : "" ) + c;
},
remove: function(o,c){
+ /*
o.className = !c ? "" :
o.className.replace(
- new RegExp("(^|\\s*\\b[^-])"+c+"($|\\b(?=[^-]))", "g"), "");
+ new RegExp("(^|\\s*\\b[^-])"+c+"($|\\b(?=[^-]))", "g"), "");*/
+ if( !c ) {
+ o.className = "";
+ } else {
+ var classes = o.className.split(" ");
+ for(var i=0; i<classes.length; i++) {
+ if(classes[i] == c) {
+ classes.splice(i, 1);
+ break;
+ }
+ }
+ o.className = classes.join(' ');
+ }
},
has: function(e,a) {
if ( e.className != undefined )
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
+ // Form attributes
enabled: "!a.disabled",
disabled: "a.disabled",
checked: "a.checked",
- selected: "a.selected"
+ selected: "a.selected",
+
+ // Form elements
+ text: "a.type=='text'",
+ radio: "a.type=='radio'",
+ checkbox: "a.type=='checkbox'",
+ file: "a.type=='file'",
+ password: "a.type=='password'",
+ submit: "a.type=='submit'",
+ image: "a.type=='image'",
+ reset: "a.type=='reset'",
+ button: "a.type=='button'",
+ input: "a.nodeName.toLowerCase()=='input'||a.nodeName.toLowerCase()=='select'||a.nodeName.toLowerCase()=='textarea'"
},
".": "jQuery.className.has(a,m[2])",
"@": {
* @test t( "All Children of ID", "#foo/*", ["sndp", "en", "sap"] );
* @test t( "All Children of ID with no children", "#firstUL/*", [] );
*
+ * @test t( "Form element :input", ":input", ["text1", "text2", "radio1", "radio2", "check1", "check2", "hidden1", "hidden2", "name", "area1", "select1", "select2", "select3"] );
+ * @test t( "Form element :radio", ":radio", ["radio1", "radio2"] );
+ * @test t( "Form element :checkbox", ":checkbox", ["check1", "check2"] );
+ * @test t( "Form element :text", ":text", ["text1", "text2", "hidden2", "name"] );
+ * @test t( "Form element :radio:checked", ":radio:checked", ["radio2"] );
+ * @test t( "Form element :checkbox:checked", ":checkbox:checked", ["check1"] );
+ * @test t( "Form element :checkbox:checked, :radio:checked", ":checkbox:checked, :radio:checked", ["check1", "radio2"] );
+ *
+ * @test t( ":not() Existing attribute", "input:not([@name])", ["text2", "check2"]);
+ * @test t( ":not() Equals attribute", "select:not([@name=select1])", ["select2", "select3"]);
+ * @test t( ":not() Equals quoted attribute", "select:not([@name='select1'])", ["select2", "select3"]);
+ *
* @name $.find
* @type Array<Element>
* @private
*/
sibling: function(elem, pos, not) {
var elems = [];
-
- var siblings = elem.parentNode.childNodes;
- for ( var i = 0; i < siblings.length; i++ ) {
- if ( not === true && siblings[i] == elem ) continue;
-
- if ( siblings[i].nodeType == 1 )
- elems.push( siblings[i] );
- if ( siblings[i] == elem )
- elems.n = elems.length - 1;
+
+ if(elem) {
+ var siblings = elem.parentNode.childNodes;
+ for ( var i = 0; i < siblings.length; i++ ) {
+ if ( not === true && siblings[i] == elem ) continue;
+
+ if ( siblings[i].nodeType == 1 )
+ elems.push( siblings[i] );
+ if ( siblings[i] == elem )
+ elems.n = elems.length - 1;
+ }
}
return jQuery.extend( elems, {
* @before <input type="text" id="test" value="some text"/>
* @result "test"
*
+ * @test ok( $(document.getElementById('main')).id() == "main", "Check for id" );
+ * @test ok( $("#foo").id() == "foo", "Check for id" );
+ * @test ok( !$("head").id(), "Check for id" );
+ *
* @name id
* @type String
* @cat DOM/Attributes
* @before <img src="test.jpg" title="my image"/>
* @result "my image"
*
+ * @test ok( $(document.getElementById('google')).title() == "Google!", "Check for title" );
+ * @test ok( !$("#yahoo").title(), "Check for title" );
+ *
* @name title
* @type String
* @cat DOM/Attributes
* @before <input type="text" name="username"/>
* @result "username"
*
+ * @test ok( $(document.getElementById('text1')).name() == "action", "Check for name" );
+ * @test ok( $("#hidden1").name() == "hidden", "Check for name" );
+ * @test ok( !$("#area1").name(), "Check for name" );
+ *
* @name name
* @type String
* @cat DOM/Attributes
* @param String expr An expression to filter the sibling Elements with
* @cat DOM/Traversing
*/
- siblings: jQuery.sibling,
+ siblings: "jQuery.sibling(a, null, true)",
/**
* @before <p>Hello</p><div><span>Hello Again</span></div><p>And Again</p>
* @result [ <span>Hello Again</span> ]
*
+ * @test isSet( $("#foo").children().get(), q("sndp", "en", "sap"), "Check for children" );
+ *
* @name children
* @type jQuery
* @cat DOM/Traversing
* @before <div><span>Hello</span><p class="selected">Hello Again</p><p>And Again</p></div>
* @result [ <p class="selected">Hello Again</p> ]
*
+ * @test isSet( $("#foo").children("[code]").get(), q("sndp", "sap"), "Check for filtered children" );
+ *
* @name children
* @type jQuery
* @param String expr An expression to filter the child Elements with
* }
* ok( pass, "Remove Class" );
*
+ * @test var div = $("div").addClass("test").addClass("foo").addClass("bar");
+ * div.removeClass("test").removeClass("bar").removeClass("foo");
+ * var pass = true;
+ * for ( var i = 0; i < div.size(); i++ ) {
+ * if ( div.get(i).className.match(/test|bar|foo/) ) pass = false;
+ * }
+ * ok( pass, "Remove multiple classes" );
+ *
* @name removeClass
* @type jQuery
* @param String class A CSS class to remove from the elements