我有以下代码:
(function($) {
"use strict";
$(function() {
// jQuery code here, eg:
$('body').css('padding-top', $('.nav').height());
// I want to call that func here...
});
}(jQuery));
自定义功能:
function xyz(a,b) {
// do something with "a" and "b"
}
我应该在哪里放置自定义功能?在(function($) {
之前,在$(function() {
之前,在$(function() {});
之内?
答案 0 :(得分:2)
区别在于范围。
Location : Scope
----------------------+--------------------------------------------------------
before (function($) { : in global scope, easy to call & modify from everywhere
before $(function() { : in "source module" scope / jQuery closure
inside $(function() { : in "$(function" scope
因此,该选择为您提供了组织代码访问的方法。 在大多数情况下,您希望隐藏内容以防止意外交互,但在某些情况下(例如日志功能),您希望从Web应用程序的任何位置进行访问。
如果您不需要从xyz()
外拨打$(function
,请将其保留在内部。如果您只需要在模块中调用它,请将其保留在( .. (jQuery))
内。如果您需要从任何地方调用它,请将其置于全局范围之外。
答案 1 :(得分:1)
因为你想在ready处理程序中调用函数,所以在其中声明它
jQuery(function ($) {
"use strict";
// jQuery code here, eg:
$('body').css('padding-top', $('.nav').height());
// I want to call that func here...
xyz();
function xyz(a, b) {
// do something with "a" and "b"
}
});
但是如果你想从dom ready处理程序的范围之外访问xyz
,你必须在dom ready处理程序的范围之外声明它。现在,该方法是dom ready处理程序的本地方法,因此只能在其中访问。
同样如上所示,您可以缩短IIFE和dom ready处理程序的使用,如上所示