jQuery .attr() 使 Internet Explorer 崩溃

Posted

技术标签:

【中文标题】jQuery .attr() 使 Internet Explorer 崩溃【英文标题】:jQuery .attr() crashing Internet Explorer 【发布时间】:2011-02-06 07:37:36 【问题描述】:

这是我第一次在这里发布问题,因为我通常会尝试自己寻找解决方案。不过,这个是 IE 问题,简直让我抓狂。

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

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

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

在此先感谢您的指点:我很惊讶如此简单且全球公认的东西(没有遇到任何其他有此问题的浏览器)会导致如此大的问题。我还在某处读到,能够远程使浏览器崩溃是一个严重的问题:)

【问题讨论】:

尝试使用 $('#imgId').attr('alt') 从哪里调用这个方法?看起来它的调用方式会导致淡入淡出动画堆叠/溢出 IE。 @Teja:我无法检查特定图像的属性“alt”,因为图像在幻灯片上,所以我需要更改它。 @Nick:你熟悉 jQuery Cycle 插件吗?该函数是从幻灯片的“之后:”选项调用的。基本上它是一个回调。 【参考方案1】:

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

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

假设 this

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

【讨论】:

【参考方案2】:

我怀疑 $("img", this) 失败了。 'img' 选择器不是问题。但是,“this”上下文可能没有很好地定义。上下文的目的是缩小搜索空间以提供更好的 jQuery 性能。 context 参数必须是 DOM 元素、文档或 jQuery 元素。我建议如下:

<div id="slideShow">

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

</div>

然后使用以下命令选择图像:

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

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

【讨论】:

【参考方案3】:
<div id="slideShow_container">
    <!-- Place your slideshow stuff here -->
    <img id="myImage"   .../>
</div>

然后使用以下选择图像:

var s = $("#slideShow_container");

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

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

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

【讨论】:

以上是关于jQuery .attr() 使 Internet Explorer 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

jquery 如何使class=header的所有div的color设为red

jQuery——操作复选框(checkbox) attr checked不起作用

jQuery 操作复选框(checkbox) attr checked不起作用

尝试使用 jquery 使模态数据动态化

ajax刷新后如何使jquery选择器保持活动状态

jQuery中.attr和.data的区别分析