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
+});