将函数传递给 jquery 窗口加载不起作用
Posted
技术标签:
【中文标题】将函数传递给 jquery 窗口加载不起作用【英文标题】:Passing a function to jquery window load doesn't work 【发布时间】: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 函数从未被调用时,其他代码不可能是问题。
【参考方案1】:
load()load
事件的简写已从 jq 3.x 中删除,您需要使用:
$(window).on("load", app.Initialize );
否则,jQuery 会采用这种方法 load() 这会导致您在 jq 3.1.1 上遇到的错误
【讨论】:
就是这样。谢谢。当 *** 允许我时,我会标记为正确答案。【参考方案2】:如果您在 jQuery API 中搜索 .load()
,您会发现两种完全不同的方法:
.load() - 从服务器加载数据并将返回的 html 放入匹配的元素中。
.load() - 将事件处理程序绑定到“加载”javascript 事件。
你想要第二个,它不再存在于 jQuery 3 中:
不推荐使用的版本:1.8,已删除:3.0
对于典型的用例,您无需等待启动脚本直到所有资产都加载完毕(不知道是不是您的情况),您可以执行以下简单操作:
$(app.Initialize);
这是$( document ).ready()
的快捷方式。来自documentation:
绑定一个在 DOM 完成加载时执行的函数。
【讨论】:
以上是关于将函数传递给 jquery 窗口加载不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何将附加参数传递给 jQuery DataTable ajax 调用?