3

這是我第一次在這裏發佈一個問題,因爲我通常試圖自己找到解決方案。不過,這是一個IE問題,讓我發瘋。jQuery .attr()崩潰Internet Explorer

使用jQuery週期插件的網站,我做的和,來填充標題格,我用一個小功能加載圖像後調用,它使用的「alt」屬性圖片。這似乎激怒了Internet Explorer,它沒有時間去完成這個顯然非常複雜的任務,並且隨着幻燈片循環,它進入一個無限循環並最終崩潰 - 版本越新,崩潰越嚴重:較舊的IE只顯示一條錯誤消息,說「該網頁無法顯示」,而較新的(7和8)完全崩潰系統。

我不知道如何解決或解決此問題。這是有問題的代碼。

function changeCaption() { 
    var caption = $("img", this).attr("alt"); 
    $('#caption').fadeIn("slow").html(caption); 
} 

預先感謝任何指針:我很驚訝,因爲這麼簡單的東西和全球公認的(沒有遇到任何其他瀏覽器誰了這個問題)怎麼樣,可能會導致問題如此之大。我也讀的地方,能夠遠程攻擊瀏覽器是一個嚴重的問題:)

+0

嘗試使用$( '#imgId')ATTR( 'alt') – 2010-04-09 20:04:17

+0

這個方法從哪裏調用?它看起來像被調用的方式導致淡入淡出的動畫堆積/溢出IE瀏覽器。 – 2010-04-09 21:14:55

+0

@Teja:我無法檢查特定圖像的屬性「alt」,因爲圖像在幻燈片上,所以我需要它來更改。 @Nick:您是否熟悉jQuery Cycle插件?該功能正在從幻燈片的「after:」選項中調用。基本上這是一個回調。 – Sunyatasattva 2010-04-10 02:40:58

回答

-1

林不熟悉,但週期插頭它似乎你可以試試這個

function changeCaption() { 
    $('#caption').fadeIn("slow").html(this.getElementsByTagName('img')[0].alt); 
} 

它應該工作假設那只有一個img包含在這個

0

我懷疑$(「img」,this)失敗。 'img'選擇器不是問題。然而,「這個」背景可能沒有明確定義。上下文的目的是縮小搜索空間以提供更好的jQuery性能。上下文參數必須是DOM元素,文檔或jQuery元素。我建議類似如下:

<div id="slideShow"> 

    <!-- put your slide show here --> 

</div> 

然後用下面的選擇圖像:

var slideShow = $("#slideShow"); 
var caption = $("img", slideShow); 

如果這不起作用,嘗試把一些警報(或使用Firebug控制檯)在碼。例如,在標題語句放入警報(標題)之後。這將幫助您確定失敗的位置。

1
<div id="slideShow_container"> 
    <!-- Place your slideshow stuff here --> 
    <img id="myImage" alt="crap" .../> 
</div> 

然後使用以下方法來選擇圖像:

var s = $("#slideShow_container"); 

var caption = $("img", s).eq(0).attr("alt"); //selects first matched image 

OR

var captions = []; 
$("img", s).each(function(){ 
    captions.push($(this).attr("alt")); //array of captions 
}) 

OR

var caption = $("#myImg", s),attr("alt"); //has to work for an explicit id