如何在正确的时间设置JS事件

时间:2012-01-11 17:15:10

标签: javascript unobtrusive-javascript

在我的rails(3.0.x,还有原型)附带的rails.js中,我看到以下结构:

(function() {
// ...
document.on("click", ...
})();

在匿名函数中包装整个代码究竟完成了什么?这是延迟代码直到dom加载还是仅文档对象的有效方法?

在我的项目中,我目前在Event.observe(document, 'dom:loaded', function() { ... }块中有很多设置代码。我想知道,如果我在重构代码时采用上面的模式。

2 个答案:

答案 0 :(得分:2)

你偶然发现了module pattern。它很有用,因为立即调用的函数中的变量是本地的,不会污染全局命名空间。

(function(){
    var something = 17;
    //can use something inside here
}());

//but not here anymore

不是因为立即调用函数(在最后的()位中)没有时间差异

答案 1 :(得分:1)

自调用匿名函数会立即触发内部内容,这与延迟代码无关。

要在DOM准备就绪后执行内部代码块,您必须拥有DOMready侦听器。我想你提到的代码Event.observe(document, 'dom:loaded', function() { ... }就是那个。