jQuery .attr()崩溃了Internet Explorer

时间:2010-04-09 19:52:36

标签: jquery internet-explorer jquery-plugins jquery-selectors

这是我第一次在这里发帖提问,因为我通常会尝试自己找到解决方案。但是,这个问题只是一个IE问题,只会让我发疯。

我在我制作的网站上使用jQuery循环插件,为了填充标题 div,我使用了一个在加载图像后调用的小函数,它使用图像的“alt”属性。这似乎激怒了Internet Explorer,它没有时间来完成这个看似如此复杂的任务,并且,随着幻灯片循环,它进入无限循环并最终崩溃 - 版本越新,崩溃越严重:较旧的IE只显示错误消息,指出“无法显示网页”,而较新的(7和8)则完全导致系统崩溃。

我不知道如何解决或解决这个问题。这是有问题的代码。

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

提前感谢任何指针:我很惊讶,如此简单和全球认可的东西(没有遇到任何其他浏览器有问题),可能会导致问题如此之大。我还读到了能够远程崩溃浏览器的地方是一个严重的问题:)

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我怀疑$(“img”,这个)失败了。 'img'选择器不是问题。然而,“这个”背景可能没有明确定义。上下文的目的是缩小搜索空间范围以提供更好的jQuery性能。 context参数必须是DOM元素,文档或jQuery元素。我建议如下:

<div id="slideShow">

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

</div>

然后使用以下选项来选择图像:

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

如果这不起作用,请尝试在代码中添加一些警报(或使用firebug控制台)。例如,在标题语句放入警报(标题)之后。这将帮助您确定失败的位置。

答案 2 :(得分:-1)

我不熟悉循环插件,但似乎你可以试试这个

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

假设这个

中只包含一个img,它应该可以正常工作