由于 $(document).ready,Jquery 函数无法正常工作
Posted
技术标签:
【中文标题】由于 $(document).ready,Jquery 函数无法正常工作【英文标题】:Jquery function is not working due to $(document).ready 【发布时间】:2017-03-26 12:49:57 【问题描述】:我们有两个 js fie,test-1.js,test-2.js。
<script type="text/javascript" src="test-2.js"></script>
<script type="text/javascript" src="test-1.js"></script>
在 test-1.js 中的代码是
$(document).ready(function ()
function test_alert() alert("hiii");
);
在 test-2.js 中
$(document).ready(function ()
function test_alert_2()
test_alert();
alert("helloo");
);
但是 test_alert() 在 test-2.js 中不起作用。如何解决这个问题?为什么这不起作用?
为了解决这个问题,我重新安排了
<script type="text/javascript" src="test-1.js"></script>
<script type="text/javascript" src="test-2.js"></script>
现在也不行了。我无法删除 document.ready()。
所以我需要一个不删除 document.ready() 的解决方案
请帮忙。
【问题讨论】:
test_alert()
工作了吗?
是的。它正在工作
【参考方案1】:
在 test-2.js 之前调用 test-1.js。
示例
<script type="text/javascript" src="test-1.js"></script>
<script type="text/javascript" src="test-2.js"></script>
【讨论】:
不要在 $(document).ready(function() ) 中创建函数;在它之外创建函数,如果你想运行函数,那么 $(document).ready(function () test_alert(); );【参考方案2】:如果你想在test-2.js
中使用来自test-1.js
的代码,你必须先加载test-1.js
。 JavaScript 按顺序执行同步代码。因此,如果该代码尚未执行,则您无法从其他范围(例如文件)访问代码。
【讨论】:
您已经更改了文件的代码,所以这技术上现在是一个不同的问题...【参考方案3】:添加第二个答案是因为您将顺序更改为正确,但随后也更改了脚本的内容。由于它们都包含您创建函数的$(document).ready(function() ...);
,这意味着您创建的函数仅存在于该函数的范围内,例如
function foo()
return 1;
$(document).ready(function()
// this is a new scope, functions created here will not be accessible outside of it.
function bar()
return 2;
);
foo(); // 1
bar(); // Error: undefined is not a function
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
【讨论】:
【参考方案4】:这里您有两个 JavaScript 文件,并且您正在使用 test-2.js 文件中的一个函数,该函数存在于 test-1.js 文件中。您的 test_alert 函数不起作用,因为您在 js 文件完全加载之前调用了该函数,由于文件加载延迟,您的 test_alert() 无法正常工作。
现在,您可以使用 window.setTimeout() 来解决这个问题。 喜欢:-
$(document).ready(function ()
function test_alert_2()
window.setTimeout(function()
test_alert();
alert("helloo");
,1000);
);
通过此代码,将在脚本加载一秒后调用 test_alert()。 我觉得这会对你有所帮助。
【讨论】:
以上是关于由于 $(document).ready,Jquery 函数无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
jQuery FancyBox Iframe - 在fancybox 中使用$(document).ready?
Jquery 验证不适用于 Document.ready()