From e2ef3df86d5f54274bf2b779d882c30aa0886bfe Mon Sep 17 00:00:00 2001 From: David Serduke Date: Fri, 16 Nov 2007 23:39:23 +0000 Subject: [PATCH] Fixed #1095 bug where radio buttons became unchecked during show(). Also added unit test and had to fix a selector test that was broken by the new testing div in test/index.html. Last made some whitespace changes. --- src/core.js | 2 +- test/index.html | 25 +++++++++++++++--- test/unit/core.js | 12 +++++++++ test/unit/fx.js | 68 ++++++++++++++++++++++++------------------------- test/unit/selector.js | 6 ++--- 5 files changed, 72 insertions(+), 41 deletions(-) diff --git a/src/core.js b/src/core.js index c014f8f..d12d5d3 100644 --- a/src/core.js +++ b/src/core.js @@ -765,7 +765,7 @@ jQuery.extend({ // Otherwise, we need to flip out more values } else { elem = jQuery( elem.cloneNode(true) ) - .find(":radio").removeAttr("checked").end() + .find(":radio").removeAttr("checked").removeAttr("defaultChecked").end() .css({ visibility: "hidden", position: "absolute", diff --git a/test/index.html b/test/index.html index 9f91f88..703354c 100644 --- a/test/index.html +++ b/test/index.html @@ -132,15 +132,24 @@ Z - + + - - + + @@ -150,6 +159,16 @@ Z +
+
+ +
+
diff --git a/test/unit/core.js b/test/unit/core.js index 5101f81..96b5d40 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -389,6 +389,18 @@ test("css(String, Object)", function() { ok( $('#foo').css('opacity') == '1', "Assert opacity is 1 when set to an empty String" ); }); +test("jQuery.css(elem, 'height') doesn't clear radio buttons (bug #1095)", function () { + expect(4); + + var $checkedtest = $("#checkedtest"); + // IE6 was clearing "checked" in jQuery.css(elem, "height"); + jQuery.css($checkedtest[0], "height"); + ok( !! $(":radio:first", $checkedtest).attr("checked"), "Check first radio still checked." ); + ok( ! $(":radio:last", $checkedtest).attr("checked"), "Check last radio still NOT checked." ); + ok( !! $(":checkbox:first", $checkedtest).attr("checked"), "Check first checkbox still checked." ); + ok( ! $(":checkbox:last", $checkedtest).attr("checked"), "Check last checkbox still NOT checked." ); +}); + test("text()", function() { expect(1); var expected = "This link has class=\"blog\": Simon Willison's Weblog"; diff --git a/test/unit/fx.js b/test/unit/fx.js index d6de83f..c20e39c 100644 --- a/test/unit/fx.js +++ b/test/unit/fx.js @@ -12,43 +12,43 @@ test("animate(Hash, Object, Function)", function() { }); test("animate option (queue === false)", function () { - expect(1); - stop(); - - var order = []; - - var $foo = $("#foo"); - $foo.animate({width:'100px'}, 200, function () { - // should finish after unqueued animation so second - order.push(2); - }); - $foo.animate({fontSize:'2em'}, {queue:false, duration:10, complete:function () { - // short duration and out of queue so should finish first - order.push(1); - }}); - $foo.animate({height:'100px'}, 10, function() { - // queued behind the first animation so should finish third - order.push(3); - isSet( order, [ 1, 2, 3], "Animations finished in the correct order" ); - start(); - }); + expect(1); + stop(); + + var order = []; + + var $foo = $("#foo"); + $foo.animate({width:'100px'}, 200, function () { + // should finish after unqueued animation so second + order.push(2); + }); + $foo.animate({fontSize:'2em'}, {queue:false, duration:10, complete:function () { + // short duration and out of queue so should finish first + order.push(1); + }}); + $foo.animate({height:'100px'}, 10, function() { + // queued behind the first animation so should finish third + order.push(3); + isSet( order, [ 1, 2, 3], "Animations finished in the correct order" ); + start(); + }); }); test("queue() defaults to 'fx' type", function () { - expect(2); - stop(); - - var $foo = $("#foo"); - $foo.queue("fx", [ "sample", "array" ]); - var arr = $foo.queue(); - isSet(arr, [ "sample", "array" ], "queue() got an array set with type 'fx'"); - $foo.queue([ "another", "one" ]); - var arr = $foo.queue("fx"); - isSet(arr, [ "another", "one" ], "queue('fx') got an array set with no type"); - // clean up after test - $foo.queue([]); - - start(); + expect(2); + stop(); + + var $foo = $("#foo"); + $foo.queue("fx", [ "sample", "array" ]); + var arr = $foo.queue(); + isSet(arr, [ "sample", "array" ], "queue() got an array set with type 'fx'"); + $foo.queue([ "another", "one" ]); + var arr = $foo.queue("fx"); + isSet(arr, [ "another", "one" ], "queue('fx') got an array set with no type"); + // clean up after test + $foo.queue([]); + + start(); }); test("stop()", function() { diff --git a/test/unit/selector.js b/test/unit/selector.js index 2c80d79..3c0c676 100644 --- a/test/unit/selector.js +++ b/test/unit/selector.js @@ -59,8 +59,8 @@ test("id", function() { t( "Child escaped ID", "form > #foo\\:bar", ["foo:bar"] ); t( "Child escaped ID", "form > #test\\.foo\\[5\\]bar", ["test.foo[5]bar"] ); - t( "ID Selector, child ID present", "#form > #radio1", ["radio1"] ); // bug #267 - t( "ID Selector, not an ancestor ID", "#form #first", [] ); + t( "ID Selector, child ID present", "#form > #radio1", ["radio1"] ); // bug #267 + t( "ID Selector, not an ancestor ID", "#form #first", [] ); t( "ID Selector, not a child ID", "#form > #option1a", [] ); t( "All Children of ID", "#foo > *", ["sndp", "en", "sap"] ); @@ -193,7 +193,7 @@ test("pseudo (:) selectors", function() { t( "Selected Option Element", "#form option:selected", ["option1a","option2d","option3b","option3c"] ); t( "Text Contains", "a:contains('Google')", ["google","groups"] ); t( "Text Contains", "a:contains('Google Groups')", ["groups"] ); - t( "Element Preceded By", "p ~ div", ["foo","fx-queue","fx-tests"] ); + t( "Element Preceded By", "p ~ div", ["foo","fx-queue","fx-tests", "moretests"] ); t( "Not", "a.blog:not(.link)", ["mark"] ); t( "nth Element", "p:nth(1)", ["ap"] ); -- 1.7.10.4