【问题标题】:wrapping a function as a jQuery parameter将函数包装为 jQuery 参数
【发布时间】:2012-03-08 08:52:34
【问题描述】:
当我遇到这种风格的构建代码时,我正在为我的网站构建一个自动完成功能:
$(function() {
function log( message ) {
$( "<div/>" ).text( message ).prependTo( "#log" );
$( "#log" ).scrollTop( 0 );
}
$(element).autocomplete(....
//more code
});
我知道关闭,“IIFE”,但这个对我来说是一个新的。
- 上面的“jQuery-wrapped”代码是怎么回事?
- 我应该这样做有什么特别的原因吗? (范围?)
- 在优化方面,我应该这样做吗?
【问题讨论】:
标签:
javascript
jquery
syntax
coding-style
【解决方案1】:
$(function() { }); 等价于 $(document).ready(function() {}); 并且在 DOM 准备好后执行。
在里面定义一个函数就是告诉你,这个函数只有在dom准备好执行时才可用。
$(element).autocomplete(.... 只是将插件实现到选择器,一旦 DOM 准备好执行。
希望现在清楚:)
$(function() { 或 $(document).ready(function() { 不需要加载整个页面,也可以像 $(window).load(fn) 那样运行。
【解决方案2】:
$(fn) 或 $(document).ready(fn) 是 jQuery 的 onload/onDOMContentLoaded 处理程序。一旦页面上的 DOM 准备就绪,传递给它的函数就会执行。
【解决方案3】:
$(function() { } 中的所有内容都将在 DOM 加载后执行。我更喜欢使用
$(document).ready(function() { } 因为更清楚了。