jQuery.attr()使Internet Explorer崩溃
这是我第一次在这里发布一个问题,因为我通常会自己尝试找到解决方案。然而,这一次,作为一个IE问题,简直让我发疯 我在自己制作的网站上使用jQuery cycle插件,为了填充标题div,我使用了一个在加载图像后调用的小函数,该函数使用图像的“alt”属性。这似乎激怒了Internet Explorer,它没有时间完成这项显然如此复杂的任务,而且,随着幻灯片的循环,它进入无限循环并最终崩溃——版本越新,崩溃越严重:旧IE只会显示一条错误消息,说“网页无法显示”,而较新版本(7和8)则会使系统完全崩溃 我不知道如何解决或解决这个问题。下面是有问题的代码jQuery.attr()使Internet Explorer崩溃,jquery,internet-explorer,jquery-plugins,jquery-selectors,Jquery,Internet Explorer,Jquery Plugins,Jquery Selectors,这是我第一次在这里发布一个问题,因为我通常会自己尝试找到解决方案。然而,这一次,作为一个IE问题,简直让我发疯 我在自己制作的网站上使用jQuery cycle插件,为了填充标题div,我使用了一个在加载图像后调用的小函数,该函数使用图像的“alt”属性。这似乎激怒了Internet Explorer,它没有时间完成这项显然如此复杂的任务,而且,随着幻灯片的循环,它进入无限循环并最终崩溃——版本越新,崩溃越严重:旧IE只会显示一条错误消息,说“网页无法显示”,而较新版本(7和8)则会使系统完全崩
function changeCaption() {
var caption = $("img", this).attr("alt");
$('#caption').fadeIn("slow").html(caption);
}
提前感谢您提供的任何提示:我很惊讶如此简单和全球公认的东西(没有遇到任何其他浏览器对此有问题)会导致如此大的问题。我还在某个地方读到,能够远程使浏览器崩溃是一个严重的问题:)我不熟悉cycle插件,但似乎你可以试试这个
function changeCaption() {
$('#caption').fadeIn("slow").html(this.getElementsByTagName('img')[0].alt);
}
假设此中只包含一个img,它应该可以工作。我怀疑$(“img”,this)失败了。“img”选择器不是问题。然而,“这个”上下文可能没有很好的定义。上下文的目的是缩小搜索空间,以提供更好的jQuery性能。上下文参数必须是DOM元素、文档或jQuery元素。我建议如下:
<div id="slideShow">
<!-- put your slide show here -->
</div>
如果这不起作用,请尝试在代码中添加一些警报(或使用firebug控制台)。例如,在caption语句的后面插入一个警报(caption)。这将帮助您确定失败的地方
<div id="slideShow_container">
<!-- Place your slideshow stuff here -->
<img id="myImage" alt="crap" .../>
</div>
或
或
尝试使用$('#imgId').attr('alt')调用此方法的位置是哪里?看起来调用它的方式会导致淡入淡出动画堆叠/溢出,即@Teja:我无法检查特定图像的属性“alt”,因为该图像在幻灯片上,所以我需要更改它@尼克:你熟悉jQuery循环插件吗?正在从幻灯片的“after:”选项调用该函数。基本上是回拨。
<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
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