【问题标题】:jquery ready function not executingjQuery就绪功能未执行
【发布时间】:2010-11-12 16:58:24
【问题描述】:

我在 jquery $(document).ready 函数中放置了一些 javascript。它在 url 中搜索一个锚点,然后运行一个单独的函数来显示匹配的内容。

如果我在 if 语句中的某处放置警报,代码就会执行,否则不会运行。我已将所有锚点名称存储在一个名为“anchorNameList”的数组中,并正在检查 URL 中的锚点是否存在。

我只希望函数在初始页面加载时运行,因此我将“currentAnchor”的默认值设置为 1000,并在每次迭代时更改它。

        if (currentAnchor == 1000 && document.location.hash.substring(1)) {
        var checkForThisAnchor = document.location.hash.substring(1);
        for (var j=0; j < anchorNameList.length; j++) {
            if (anchorNameList[j] == checkForThisAnchor) {
                expandMe(j);
            }
        }
    }

【问题讨论】:

  • 如果在您放置警报装置时它正在工作,则存在一些时间问题。
  • 你的jQuery脚本标签是在你自己的JS文件脚本标签之前还是之后?它需要先来。
  • 在标头中调用 jQuery 脚本。我正在调用的 expandMe 函数是在 ready 函数之上定义的。本质上,页面上的顺序是:head->(jQuery reference) body->(expandMe function, $(document).ready and included content)。我应该重新安排订单吗?

标签: javascript jquery onload document-ready


【解决方案1】:

根据我的经验,当 JavaScript 问题通过在某处添加无害的 alert() 神奇地自行修复时,问题的根源通常是异步请求。

在非警报情况下,异步请求尚未完成。但是通过添加警报,它有机会完成,因此允许您的代码在没有完整异步调用响应的情况下运行不同的代码路径。

【讨论】:

    【解决方案2】:

    我将 onload 事件从 jQuery 的 document.ready 切换到 window.ready。它大约有 30% 的时间正常工作,所以这绝对是一个时间问题。页面上用于检索列表项的主要 JavaScript 函数似乎运行缓慢。我只是将整个扩展函数移到了列表检索函数的末尾,所以它只是线性运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 2018-08-15
      相关资源
      最近更新 更多