2012-04-05 113 views
0

嗨,我動畫的背景圖像。在Firefox它工作正常,但在IE瀏覽器給我錯誤,$(header.css(...) is null or not an object)。這是我的代碼動畫不在IE中工作,但在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); 

爲什麼它不在IE中工作?另外我正在使用覆蓋。在Firefox中當我點擊疊加層時,疊加層消失。但在IE上當我點擊覆蓋圖時,則沒有任何發生。下面是該

// 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() 

我還添加了密切聯繫,在我的div像

<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> 

當我在IE瀏覽器上的密切聯繫點擊,那麼$('.overlayBox').css('display', 'none');線工作,但bgcover代碼仍然存在,意思是$('.bgCover').animate({})行不起作用。爲什麼這不是在IE工作:(請幫助 感謝

+0

我使用IE 8.我也編輯我的問題,以添加更多的問題。請檢查一下。謝謝 – Basit 2012-04-05 06:08:31

回答

0

這可能是隱藏()的問題,你可以嘗試使用:


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

希望幫助

+0

不,它不工作:( – Basit 2012-04-05 07:00:01

+0

奇怪的事情......當我在IE中調試我的代碼,然後調試一切正常,但是當我正常運行,然後'($('。bgCover')。animate({ ))「不行,任何想法?怎麼可能......? – Basit 2012-04-05 07:18:26

0

修復了backgroung位置

if ($.browser.msie) { 

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

} else { 

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

} 

覆蓋解決

showOverlayBox(); 

if ($.browser.msie) { 

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

} else { 

    $('.bgCover').css({ 

     opacity:0 

    }).animate({ 

     opacity:0.5, 
     backgroundColor:'#000' 

    }); //end of animate 

} 

然後代碼開始似乎在兩個瀏覽器上工作。我不知道在代碼中創建的doOverlayOpen()方法中有什麼作用,animate(),所以事件以及bgCover並沒有消失。那麼這個代碼至少爲我工作。 謝謝

相關問題