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不起作用