【问题标题】:Passing a function to jquery window load doesn't work将函数传递给 jquery 窗口加载不起作用
【发布时间】:2017-02-11 12:26:22
【问题描述】:
function App(){
...
}
App.prototype.Initialize = function(){
    this.initMaps();
    this.rtspPlayer = new RTSPPlayer(); 
    this.rtspPlayer.initVXGVideoFeeds();
}

var app = new App();

$(window).load(  app.Initialize );

这给出了这个错误:

jquery-3.1.1.min.js:4 Uncaught TypeError: a.indexOf is not a function

它不应该工作吗?在匿名函数中调用函数作为 .load() 的参数也不起作用。 Initialize() 函数永远不会被调用。

谢谢

【问题讨论】:

  • 您能提供更多代码吗?问题不在您提供的代码中。这可能不是函数的错,而是它内部的原因。
  • 您的代码中没有可见的a var。 a 是什么?
  • a 是 jquery 中的一个变量。当 Initialzie 函数从未被调用时,其他代码不可能是问题。

标签: jquery events dom


【解决方案1】:

load()load 事件的简写已从 jq 3.x 中删除,您需要使用:

$(window).on("load",  app.Initialize );

否则,jQuery 会采用这种方法 load() 这会导致您在 jq 3.1.1 上遇到的错误

【讨论】:

  • 就是这样。谢谢。当 stackoverflow 允许我时,我会标记为正确答案。
【解决方案2】:

如果您在 jQuery API 中搜索 .load(),您会发现两种完全不同的方法:

  • .load() - 从服务器加载数据并将返回的 HTML 放入匹配的元素中。

  • .load() - 将事件处理程序绑定到“加载”JavaScript 事件。

你想要第二个,它不再存在于 jQuery 3 中:

不推荐使用的版本:1.8,已删除:3.0

对于典型的用例,您无需等待启动脚本直到所有资产都加载完毕(不知道是不是您的情况),您可以执行以下简单操作:

$(app.Initialize);

这是$( document ).ready() 的快捷方式。来自documentation

绑定一个在 DOM 完成加载时执行的函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多