我正在尝试编写我的第一个jQuery插件。按照jQuery插件文档,我做了这个:
(function($) {
$.fn.selection = function(array, n) { ... };
}(jQuery));
但是当我尝试用这样的代码运行它时:
var array = [5, 2, 1, 5, 9];
alert($.selection(array, 2));
我收到错误Uncaught TypeError: Object function (j,s){return new b.fn.init(j,s)} has no method 'selection'
。
然而,当我像这样松开.fn
时:
(function($) {
$.selection = function(array, n) { ... };
}(jQuery));
一切正常。为什么原始示例不能像jQuery doc那样添加到jQuery.fn
对象?
答案 0 :(得分:2)
$。fn是用于从$(“...”)创建的jQuery对象的原型。
$是jQuery工厂和命名空间。
所以
$.mymethod = function (){}
只能通过
调用$.mymethod()
但是
$.fn.mymethod = function () { this.remove(); }
可以这样调用。
var divs = $(".mydivs");
divs.mymethod();
在第二个例子中,mymethod将使用jQuery选择作为对象调用,并将删除所有匹配的div。
在这里阅读更多内容:
答案 1 :(得分:1)
使用$.fn.selection
时,该函数仅适用于jquery对象,即$("<SOME_SELECTOR>").selection