有人可以解释定义jQuery插件时语法的含义吗?

时间:2010-06-04 16:39:57

标签: javascript jquery

我正在阅读有关创建自定义jQuery插件的内容,并且对于以下语法的含义有点困惑:

(function($){  
    $.fn.truncate = function() {  
        return this.each(function() { 
        });
     };
})(jQuery);

我知道函数($)是一个接受$的匿名函数。我只是不太明白为什么这个函数包含在括号中以及如何使用jQuery中的以下括号集...工作。

3 个答案:

答案 0 :(得分:5)

以下jQuery参数只是执行匿名函数并将jQuery作为$参数传递。这确保$ = jQuery只是加入窗口。$不等于jQuery。

这是对代码的重写,可能更有意义:

function myFunc($) {   
 $.fn.truncate = function() {   
    return this.each(function() {   
 });   
}

myFunc(jQuery);

答案 1 :(得分:4)

周围的括号创建一个匿名函数,$符号引用全局jQuery对象。

$.fn.truncate - 这意味着您正在扩展jQuery对象以包含名为truncate的新功能。
用法 $( '#someElement' ).truncate();

答案 2 :(得分:3)

假设jQuery库拥有$是不安全的。一些其他javascript库/用户可能/确实将该标识符用于其他目的。但是,jQuery始终是jQuery库(禁止任何恶人)。

这个匿名函数通过使{匿名函数的本地参数成为jQuery,轻松安全地将$快捷方式公开为jQuery。由于参数将仅覆盖函数范围的任何全局变量,因此不会影响其外的任何其他用户/库代码。

最后,执行匿名函数的地方jQuery作为填充$的第一个参数传入。

因此,当简化时,这只是插件开发人员采用的快捷方式,以便他们可以安全可靠地使用$;如果您不介意在任何地方使用jQuery,那么这完全是可选的。