我有一个2000行的jquery文件,我把文件分成了较小的文件,如果我在第一个文件中有一个函数,那个文件#2指的是,那么它就是未定义的.
每个文件都包含在jquery ready函数中,执行此操作的最佳方法是什么?
如果有问题的函数在ready处理程序的范围内声明,则任何其他代码(包括其他ready处理程序)都无法访问它.
您需要做的是在全局范围内定义函数:
function foo()
{
alert('foo');
}
$(document).ready(function()
{
foo();
});
Run Code Online (Sandbox Code Playgroud)
PS更简洁的添加ready处理程序的方法是这样的:
$(function()
{
foo();
});
Run Code Online (Sandbox Code Playgroud)
编辑:如果您的每个分区ready处理程序的内容依赖于前面的部分,那么由于上述原因,您无法将它们拆分.更明智的做法是将大量逻辑分解为独立函数,将它们放在ready事件处理程序之外的自己的文件中,然后从处理程序中调用它们.
编辑:为了进一步说明,请考虑此处理程序:
$(function()
{
var foo = 'foo';
var bar = 'bar';
alert(foo);
alert(bar);
});
Run Code Online (Sandbox Code Playgroud)
我可能会把它分开:
$(function()
{
var foo = 'foo';
var bar = 'bar';
});
$(function()
{
alert(foo);
alert(bar);
});
Run Code Online (Sandbox Code Playgroud)
这里的问题是,foo与bar在第一个处理程序的定义,而当他们在第二个处理器的使用,他们已经走了超出范围.
像这样的任何连续逻辑流都需要在相同的范围内(在这种情况下,事件处理程序).
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |