让自执行函数在dom就绪时运行
Do self executing functions run at dom ready?
在我听说自执行函数之前,我总是这样做:
$(document).ready(function() {
doSomething();
});
function doSomething()
{
// blah
}
一个自执行的函数会有同样的效果吗?它会在dom上运行吗?
(function doSomething($) {
// blah
})(jQuery);
没有。一个自执行的函数在Javascript引擎找到它时运行。
但是,如果您将所有代码放在文档的结尾</body>
标记之前(强烈推荐),那么您不必等待DOM准备好,因为您已经自动通过了。
如果您想要的是$
变量的作用域,并且您不想将代码移动到页面的底部,您可以使用:
jQuery(function($){
// The "$" variable is now scoped in here
// and will not be affected by any code
// overriding it outside of this function
});
不会,它会在JavaScript文件执行时立即运行。
不,自动执行的javascript函数会在这里运行。
如果你想创建一个DOM就绪的函数,写下面的代码:
$(function() {
// this will run on DOM ready
});
是
的简写$(document).ready(function() {
});
不,自动执行的函数在你在代码中"声明"之后立即运行。即使它位于外部.js文件中。
在你的例子中,有一种可能性,你的函数将执行和jQuery的值是undefined。如果您希望代码在DOMReady上执行,请继续使用
$(document).ready(function(){
doSomething();
});
或
$(function(){
doSomething();
});
或者
window.onload = function(){
doSomething();
}
$(document).ready(function() { ... });
只是将该函数绑定到文档的ready事件,因此,正如您所说,当文档加载时,事件就会触发。
(function($) { ... })(jQuery);
实际上是Javascript的一个结构,所有这段代码所做的就是将jQuery对象作为参数传递给function($)并运行该函数,因此在该函数中,$总是指向jQuery对象。这可以帮助解决命名空间冲突等问题。
所以#1在文档加载时执行,而#2立即运行,使用jQuery对象$作为简写
$(document).ready(function(){ ... }); or short $(function(){...});
这个函数在DOM准备好时被调用,这意味着你可以开始查询元素,例如。ready()将在不同的浏览器上使用不同的方式来确保DOM真的准备好了。
(function(){ ... })();
这只不过是一个函数,当浏览器解释ecma-/javascript时,它会尽快调用自己。因此,在这里成功地操作DOM元素是不太可能的。
jQuery文档。Ready与自调用匿名函数
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 使用压缩的JavaScript文件(不是运行时压缩)
- Javascript运行php文件,然后下载文件
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- Angularjs代码未在匿名函数中运行
- jquery设置为使用参数运行
- 如何根据时间运行不同的脚本
- Ajax请求文档就绪会导致jquery加载缓慢
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 将文本框链接到由按钮运行的javascript公式
- 为什么不是't运行此Javascript的Chrome
- ng应用程序使脚本无限运行
- 如何在运行时在angular 2中加载外部js脚本
- 函数未在页面就绪时运行
- 在文档就绪上运行 PHP 函数
- 使用 jquery 在 django 文档准备就绪时运行代码
- 让自执行函数在dom就绪时运行
- 如何在jQuery中运行通过AJAX加载的DOM就绪函数
- Vue.js 路由器:在组件准备就绪时运行代码