var createControl = function(attribute){...} $ .fn.createControl = function(attribute){..}之间的区别是什么?

时间:2012-08-06 07:14:42

标签: jquery jquery-plugins

之间有什么区别
var createControl = function (attribute){ ...} 

$.fn.createControl = function (attribute) { .. }

在jQuery中。将函数从$ .fn.createControl更改为var createControl的优点是什么。

3 个答案:

答案 0 :(得分:2)

var foo = function (param) { ... }

将功能分配给foo

$.fn.foo = function (param) { ... } 

使用foo扩展jQuery的原型。 fn只是prototype的快捷方式,而$jQuery的快捷方式。你可以写同样的东西:

jQuery.prototype.foo = function (param) { ... }

不同之处在于前者只是某个范围内的变量,在它之外是不可见的。后者是一个扩展jQuery全局对象的方法,因此可以从任何地方访问变量,因为jQuery对象附加到window,是全局的。

答案 1 :(得分:1)

这是编写jQuery插件的语法的一部分,因此您可以像这样调用自定义插件:

$(selector).createControl();

http://docs.jquery.com/Plugins/Authoring

这样,你的createControl()就能分辨出它被调用的元素。如果您正在执行var createControl,则需要将选择器传入函数,或者在函数内对其进行硬编码。

答案 2 :(得分:0)

使用$.fn.createControl = function() {}允许使用插件。例如,如果有人想为某些东西制作一个插件,并且想让用户决定他想要什么元素,那么该人可以使用该插件$('#element').createControl();

只做var createControl = function() {}只是创建一个函数,它的唯一用途就是单独调用,例如createControl();,前面没有任何选择器元素。