From a5f8a1441158b66efb76de1d15f061f87f7bdc17 Mon Sep 17 00:00:00 2001 From: John Resig Date: Wed, 9 Dec 2009 21:58:29 -0800 Subject: [PATCH] Make sure that calling .width(num) or .height(num) on an empty set returns the empty set. Fixes #5600. --- src/dimensions.js | 5 ++++- test/unit/dimensions.js | 12 +++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/dimensions.js b/src/dimensions.js index 3b74ded9b..d3c8418db 100644 --- a/src/dimensions.js +++ b/src/dimensions.js @@ -20,7 +20,10 @@ jQuery.each([ "Height", "Width" ], function(i, name){ jQuery.fn[ type ] = function( size ) { // Get window width or height var elem = this[0]; - if ( !elem ) { return null; } + if ( !elem ) { + return size == null ? null : this; + } + return ("scrollTo" in elem && elem.document) ? // does it walk and quack like a window? // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] || diff --git a/test/unit/dimensions.js b/test/unit/dimensions.js index f365f9289..8653de42c 100644 --- a/test/unit/dimensions.js +++ b/test/unit/dimensions.js @@ -1,7 +1,7 @@ module("dimensions"); test("width()", function() { - expect(6); + expect(7); var $div = jQuery("#nothiddendiv"); $div.width(30); @@ -28,10 +28,13 @@ test("width()", function() { jQuery("#nothiddendivchild").css({ padding: "3px", border: "2px solid #fff" }); equals(jQuery("#nothiddendivchild").width(), 20, "Test child width with border and padding"); jQuery("#nothiddendiv, #nothiddendivchild").css({ border: "", padding: "", width: "" }); + + var blah = jQuery("blah"); + equals( blah.width(10), blah, "Make sure that setting a width on an empty set returns the set." ); }); test("height()", function() { - expect(5); + expect(6); var $div = jQuery("#nothiddendiv"); $div.height(30); @@ -54,6 +57,9 @@ test("height()", function() { //equals($div.height(), 30, "Test padding specified with percent"); $div.css({ display: "", border: "", padding: "", height: "1px" }); + + var blah = jQuery("blah"); + equals( blah.height(10), blah, "Make sure that setting a height on an empty set returns the set." ); }); test("innerWidth()", function() { @@ -139,4 +145,4 @@ test("outerHeight()", function() { // reset styles $div.css({ display: "", border: "", padding: "", width: "", height: "" }); -}); \ No newline at end of file +}); -- 2.39.5