Javascript 函数中的jQuery在文档外部声明就绪,但从内部调用
如果只从jQuery document ready块中调用一个声明并附加到全局作用域但具有jQuery依赖代码的函数,始终是否可以正常工作 e、 g:Javascript 函数中的jQuery在文档外部声明就绪,但从内部调用,javascript,jquery,Javascript,Jquery,如果只从jQuery document ready块中调用一个声明并附加到全局作用域但具有jQuery依赖代码的函数,始终是否可以正常工作 e、 g: 函数myFunc(){alert($('#someElem').text();} $(函数(){ myFunct(); }) 在实践中,我已经看到了很多这样的功能,这些功能完全被写在单独的文件中。我从未见过它失败,但我有一部分怀疑它是否真的安全 我认为这至少部分取决于DocumentReady是否等待页面加载的javascript编译阶段完成
函数myFunc(){alert($('#someElem').text();}
$(函数(){
myFunct();
})
在实践中,我已经看到了很多这样的功能,这些功能完全被写在单独的文件中。我从未见过它失败,但我有一部分怀疑它是否真的安全
我认为这至少部分取决于DocumentReady是否等待页面加载的javascript编译阶段完成。但这可能失败还有其他原因吗
请忽略有关污染全局名称空间、可读性等问题。这里我只关心可靠的执行。只有在
myfunct()
可以从document.ready()
范围之外访问时,才会编写此类构造。如果其他函数/事件也可能调用它,则最好将其移出
如果只打算调用一次或在特定事件上调用它,则它只能嵌套在调用函数体中
人们甚至可能希望使函数调用完全包含clorjure等结构。在这种情况下,函数也将嵌套在另一个var
声明中
除此之外,似乎没有其他大的区别
如果我遗漏了什么,请加上
它确实不会失败,查找元素的
$()
函数只在执行myFunc
函数时执行,并且该函数只执行一次document.ready
激发,因此元素将在那时可用
全局myFunc
函数也将始终可用,只要它是在DOM中的document.ready
code之前定义的
在许多情况下,如果在
文档之后定义,它甚至是可用的。ready
代码asDOMContentLoaded
(以及其他类似的方法)是异步的,并等待DOM准备就绪,但不能保证所有脚本都会在那时加载,只保证DOM中的元素是可用的,因此,您通常应该确保myFunc
函数是在$(function(){…})之前定义的代码>代码。除非其他外部文件未加载,否则它不会失败…另一种情况是动态加载元素时,“myfunct()”可能出现在“document.ready()”范围之外。例如,如果包含在“document.ready()”块中,则与初始页面加载后按需构建和显示的模式窗口相关的jquery将不起作用,我认为问题不在于什么时候使用全局函数,而在于你是否可以依赖一个全局函数总是在文档准备就绪时可用
<script src = "https://code.jquery.com/jquery-2.1.0.js"></sript>
<script>
function myFunc(){ alert( $('#someElem').text() ); }
$(function(){
myFunct();
})
</script>