【问题标题】:jQuery .attr() crashing Internet ExplorerjQuery .attr() 使 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 插件吗?该函数是从幻灯片的“之后:”选项调用的。基本上它是一个回调。

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


【解决方案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" 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-24
        • 2012-10-27
        相关资源
        最近更新 更多