2012-04-05 13 views
0

Hallo arbeite ich das Hintergrundbild animiert. In Firefox funktioniert es gut, aber auf IE gibt es mir Fehler, dass $(header.css(...) is null or not an object). Hier ist mein CodeAnimation funktioniert nicht im IE, aber in Firefox

var $header = $(".overlayBox"); 
$header.css("backgroundPosition", "0 0"); 

var bgScroll = function() { 

    **var current = parseInt($header.css("backgroundPosition").split(" ")[1]), //This is the line that IE is mentioning**  
    newBgPos = "0 " + (current - 1) + "px"; 
    //Finally we set the new background-position using jQuery's css() method. 
    $header.css("backgroundPosition", newBgPos); 

} //end of bgScroll() 

setInterval(function() { bgScroll() }, 75); 

Warum funktioniert es nicht in IE? Auch ich benutze Überlagerung. In Firefox Wenn ich auf Overlay klicke, verschwindet das Overlay. Aber im IE Wenn ich auf Overlay klicke, passiert nichts. Hier ist der Code für diese

// close it when closeLink is clicked 
$('a.closeLink').click(doOverlayClose);  

function doOverlayOpen() { 

    //set status to open 
    isOpen = true; 
    showOverlayBox(); 
    ... 
    addEvents(); 

    // dont follow the link : so return false. 
    return false; 

} //end of doOverlayOpen() 

function doOverlayClose() { 

    //set status to closed 
    isOpen = false; 
    var test = $(".overlayBox"); 
    $('.overlayBox').css('display', 'none'); 

    $('.bgCover').animate({   //This is not working in IE 
     opacity:0 
    }, null, null, function() { 
     $(this).hide(); 
    }); 

} //end of doOverlayClose() 

function addEvents() {  //Now working in IE 

    //Click out event! 
    $(".bgCover").click(function(){ 
     doOverlayClose(); 
    }); 

    //Press Escape event! 
    $(document).keypress(function(event){ 

     // IF Esc key press and popup is visible 
     if (event.keyCode==27 && isOpen==true) { 
      doOverlayClose(); 
     } 
    }) ; 

} //end of addEvents() 

ich auch die enge Verbindung in meinem div hinzugefügt wie

<div class="bgCover">&nbsp;</div> 
<div class="overlayBox" style="background-image: url(../images/header.jpg)" > 

    <div class="overlayContent"> 

     <a href="javascript:void()" class="closeLink">Close</a> 
     .... 

    </div> 

</div> 

Wenn ich auf eine enge Verknüpfung klicken im IE, dann die $('.overlayBox').css('display', 'none'); Linie aber bgcover arbeitet dort bleibt, meine $('.bgCover').animate({}) Linie funktioniert nicht. . Warum dies funktioniert nicht in IE :(Bitte helfen Dank

+0

Ich benutze IE 8. Ich bearbeite auch meine Frage, um ein weiteres Problem hinzuzufügen. Bitte schau es dir an. Danke – Basit

Antwort

0

dass das Problem der Haut sein könnte(), könnten Sie versuchen, mit:.


$('.bgCover').animate({   //This is not working in IE 
     opacity:0 
    }, null, null, function() {   
      $(this).attr("style", "display: none"); 
    }); 

Hoffnung, die

+0

Nein, es funktioniert nicht :( – Basit

+0

Seltsames Ding ... Wenn ich meinen Code im IE debugge, dann während des Debuggens alles gut funktioniert, aber wenn ich normal laufe, dann '($ ('. BgCover'). Animate ({}) '' funktioniert nicht. Irgendeine Idee? Wie kann es sein ...? – Basit

0

Fix hilft für backgroung Position

if ($.browser.msie) { 

     current = parseInt($header.css("backgroundPositionY")); 

} else { 

     current = parseInt($header.css("backgroundPosition").split(" ")[1]); 

} 

Overlay beheben

showOverlayBox(); 

if ($.browser.msie) { 

    $('.bgCover').css("opacity", 0.5); 

} else { 

    $('.bgCover').css({ 

     opacity:0 

    }).animate({ 

     opacity:0.5, 
     backgroundColor:'#000' 

    }); //end of animate 

} 

Dann scheint Code in beiden Browsern zu funktionieren. Ich weiß nicht, welchen Effekt animate() in der doOverlayOpen() -Methode am Code erzeugte, also verschwanden sowohl die Ereignisse als auch der bgCover nicht. Nun, dieser Code funktionierte zumindest für mich. Danke

Verwandte Themen