diff --git a/src/core.js b/src/core.js index 7ac4ad75b..c7f30d6de 100644 --- a/src/core.js +++ b/src/core.js @@ -816,6 +816,12 @@ jQuery.extend({ "1" : ret; } + // Opera sometimes will give the wrong display answer, this fixes it, see #2037 + if ( jQuery.browser.opera && name == "display" ) { + var save = elem.style.display; + elem.style.display = "block"; + elem.style.display = save; + } // Make sure we're using the right name for getting the float value if ( name.match( /float/i ) ) diff --git a/test/index.html b/test/index.html index b062179f9..e854101c9 100644 --- a/test/index.html +++ b/test/index.html @@ -172,6 +172,9 @@ Z
hi there
+
+
+
diff --git a/test/unit/core.js b/test/unit/core.js index a6ae6e415..088726ff7 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -420,7 +420,7 @@ test("css(String|Hash)", function() { }); test("css(String, Object)", function() { - expect(20); + expect(21); ok( $('#foo').is(':visible'), 'Modifying CSS display: Assert element is visible'); $('#foo').css('display', 'none'); ok( !$('#foo').is(':visible'), 'Modified CSS display: Assert element is hidden'); @@ -454,6 +454,10 @@ test("css(String, Object)", function() { var j = $("#nonnodes").contents(); j.css("padding-left", "1px"); equals( j.css("padding-left"), "1px", "Check node,textnode,comment css works" ); + + // opera sometimes doesn't update 'display' correctly, see #2037 + $("#t2037")[0].innerHTML = $("#t2037")[0].innerHTML + equals( $("#t2037 .hidden").css("display"), "none", "Make sure browser thinks it is hidden" ); }); test("jQuery.css(elem, 'height') doesn't clear radio buttons (bug #1095)", function () { @@ -1368,4 +1372,4 @@ test("contents()", function() { var c = $("#nonnodes").contents().contents(); equals( c.length, 1, "Check node,textnode,comment contents is just one" ); equals( c[0].nodeValue, "hi", "Check node,textnode,comment contents is just the one from span" ); -}); \ No newline at end of file +});