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