【问题标题】:Jquery find() taking too much time in IEJquery find() 在 IE 中花费了太多时间
【发布时间】:2009-08-21 16:22:50
【问题描述】:

我试图在 Ajax HTML 响应中的 DIV 中查找 HTML:

$j(responseText).find("#my_DIV").html()

这在 FF 中完美运行,但 IE6 似乎挂起并永远等待 find() 完成,是否有办法找到 DIV 或者我做错了什么?

【问题讨论】:

  • 代码responseText怎么样?
  • 代码响应文本中包含从 AJAX 响应返回的整个 HTML,此 HTML 有一个
  • 回复文本:



    .....




    // 这里有需要的 HTML




    ..... .
  • oops 不知道你不能在 cmets 中使用 BR 标签....基本上响应文本有一个完整的 HTML 页面,我试图从中提取我的 DIV
  • @Murtaza 下次只需编辑您的问题。

标签: jquery internet-explorer timeout find


【解决方案1】:

我认为问题在于 jQuery.clean 函数,如果你传递一个非常大的 HTML,一旦 jquery 必须将所有 html 字符串解析为 dom 节点,你的浏览器将有很多工作要做,因为 firefox is faster than IE 你只注意到IE中的问题。

【讨论】:

    【解决方案2】:

    如果是 ajax 调用,请尝试减少响应。你没有提到你在服务器端使用什么 - 但想法是,如果它是一个 XMLHttpRequest 进来,你只返回所需的片段。

    【讨论】:

      【解决方案3】:

      尝试像这样拆分您的代码:

      var response = $j(responseText);
      var div = response.find("#my_DIV");
      var html = div.html();
      

      这样,您将能够准确地看到哪个部分花费了时间。然后,有了这些更准确的信息,您可以编辑您的问题以提供更多详细信息。

      【讨论】:

        【解决方案4】:

        我不确定后代选择器是否使用与 find 方法相同的迭代,但您可以尝试以下代码,看看是否能得到更快的响应:

        $j(responseText+" #my_DIV").html()
        

        请参阅descendant selector 的文档

        【讨论】:

          猜你喜欢
          相关资源
          最近更新 更多
          热门标签