2011-02-18 95 views
0

我有一個問題,我必須皮膚的網站,而無法更改HTML。jquery選擇器不工作在IE8

因此,我不得不做一些JS我通常不會做的事情。我必須做的一部分是將「默認」圖像移動到新的位置。這適用於所有瀏覽器,包括IE7,EXCEPT IE8。想法?

$(".carouselThumbWrap.carouselSelected").animate({ marginTop: hoverYPos }, 1); 

的HTML看起來像這樣:

<li assetUrl="art.png" class="carouselThumbWrap carouselSelected" assetType="image">blah</li> 

我能想到的唯一的事情是,我們有一個比賽的情況。 CarouselSelected由某個小部件或另一個小部件分配,我無法更改,並且在我的document.ready函數運行之前一定不會出現。想法?我錯過了什麼嗎?

+0

同意。社區圍繞提問和投票並標記好的答案而建立。 – Jeff

+1

對不起。我在這裏很新,不知道該怎麼做。完成。 – panzhuli

+0

事實證明,它看起來可能是animate()錯誤。仍在調查。將代碼更改爲$(「。carouselThumbWrap.carouselSelected」)。css(「background」,「white」);在IE8上工作... – panzhuli

回答

2

原來這是一場競賽情況,這個固定:

$($(".carouselThumbWrap")[0]).addClass("carouselSelected"); 
+0

在IE8上花費的時間...你有一個好點。 –

0

車IE8行爲不端,你可以嘗試這樣的:

$(".carouselThumbWrap").each(function() { 
    if(this.hasClass("carouselSelected")) this.animate({ marginTop: hoverYPos }, 1); 
}); 

以避開它?

0

如果事實證明是計時問題,您可以使用Live Query插件來解決問題。

0

你可以嘗試

$("li.carouselThumbWrap.carouselSelected").animate({ marginTop: hoverYPos }, 1); 

它應該是相同的,但如果它是一個錯誤,即它可能會有所幫助。

0

如果其他一些JS函數也在旋轉木馬上,你可以用你自己的函數覆蓋違規函數。然後,在新的覆蓋函數中,調用原始函數並添加自己的邏輯來修復所有內容。

someWidget.badFunction = function() 
{ 
    //mess up carousel so julie can get her work done 
} 

var originalBadFunction = someWidget.badFunction; 

somewidget.badFunction = function() 
{ 
    originalBadFunction(); 
    //put your code that fixes everything and makes the world right again here 
}