如何适时设置JS事件

发布于 2024-12-26 09:52:24 字数 315 浏览 0 评论 0原文

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

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

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

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

In the rails.js that came with my rails (3.0.x, still with prototype), I see the following structure:

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

What exactly is accomplished with the wrapping of the whole code in the anonymous function? Is this a valid way to delay the code until the dom has loaded or only the document object?

In my project, I currently have a lot of setup code inside a Event.observe(document, 'dom:loaded', function() { ... } block. I was wondering, if I should adopt the pattern above when I refactor my code.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

赢得她心 2025-01-02 09:52:24

您偶然发现了模块模式。它很有用,因为立即调用的函数内的变量是本地的,不会污染全局命名空间。

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

//but not here anymore

请注意,由于立即调用函数(在最后的 () 位中),所以时间上没有差异

You have stumbled across the module pattern. It is useful because variables inside the immediately invoked function are local and don't pollute the global namespace.

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

//but not here anymore

Not ethat there is no difference in timeing since the function is immediately invoked (in the final () bit)

狂之美人 2025-01-02 09:52:24

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

为了让里面的代码块在 DOM 准备好后执行,你必须有 DOMready 监听器。我猜你提到的代码 Event.observe(document, 'dom:loaded', function() { ... } 就是这样的代码。

The self-invoking anonymous function will trigger what is inside immediately, which has nothing to do with delaying the code.

To make the code block inside be executed after the DOM is ready, you have to have DOMready listener. I guess the code you mentioned Event.observe(document, 'dom:loaded', function() { ... } is the one.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文