Fixed #2037 where Opera would mis-state the value of 'display' after an innerHTML...
authorDavid Serduke <davidserduke@gmail.com>
Mon, 17 Dec 2007 01:58:05 +0000 (01:58 +0000)
committerDavid Serduke <davidserduke@gmail.com>
Mon, 17 Dec 2007 01:58:05 +0000 (01:58 +0000)
src/core.js
test/index.html
test/unit/core.js

index 7ac4ad7..c7f30d6 100644 (file)
@@ -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 ) )
index b062179..e854101 100644 (file)
@@ -172,6 +172,9 @@ Z</textarea>
                                </div>
                        </form>
                        <div id="nonnodes"><span>hi</span> there <!-- mon ami --></div>
+                       <div id="t2037">
+                               <div><div class="hidden">hidden</div></div>
+                       </div>
                </div>
        </div>
        </dl>
index a6ae6e4..088726f 100644 (file)
@@ -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
+});