我找到了 here
;(function ($, window, document, undefined) {
//code
}(jQuery, this, this.document));
我第一次看到这样的东西。它是什么以及如何解释?我不明白为什么它必须通过 this 和 this.document,以及 'undefined' 是什么意思。
我问的原因是因为我将它包含在我的页面中并且
if($('ul.mtree').length)
返回 false,尽管当我在控制台中键入它时它返回 true。
第一个分号 ;
将以下代码与可能忘记了分号的任何其他前面的代码区分开来。这很重要,因为如果找不到分号,括号将尝试将前面的语句作为函数运行。
对于其余代码,我们只是声明一个“内联”函数,该函数将立即执行,其中参数 $、window、document
然后被实例化为 jQuery, this, this.document
(分别)来自全局范围。这主要是为了让您可以在新的 jQuery 插件中使用“$”,而不必担心 $
是否已在其他地方被覆盖。您可以确定 $
与 jQuery
相同。
阅读更多关于“保护 $ 别名和添加范围”的信息 here
来自 OP 的更新:
对于返回 false 的 if
语句,请确保在调用 if
语句时已加载 html。一种快速的方法是将其包装在 $(document).ready
方法中,如下所示:
$(document).ready(function () {
if($('ul.mtree').length) {
alert("got 'em!");
}
});