Jquery plugins 插件不';当我使用.fn时,它不会工作,但如果我不使用它,它会工作
我正在尝试编写我的第一个jQuery插件。根据jQuery插件文档,我做了以下工作:Jquery plugins 插件不';当我使用.fn时,它不会工作,但如果我不使用它,它会工作,jquery-plugins,Jquery Plugins,我正在尝试编写我的第一个jQuery插件。根据jQuery插件文档,我做了以下工作: (function($) { $.fn.selection = function(array, n) { ... }; }(jQuery)); 但当我尝试使用以下代码运行它时: var array = [5, 2, 1, 5, 9]; alert($.selection(array, 2)); (function($) { $.selection = function(array, n) { ..
(function($) {
$.fn.selection = function(array, n) { ... };
}(jQuery));
但当我尝试使用以下代码运行它时:
var array = [5, 2, 1, 5, 9];
alert($.selection(array, 2));
(function($) {
$.selection = function(array, n) { ... };
}(jQuery));
我得到了错误uncaughttypeerror:Object函数(j,s){returnnewb.fn.init(j,s)}没有方法“selection”
但是,当我像这样松开.fn
时:
var array = [5, 2, 1, 5, 9];
alert($.selection(array, 2));
(function($) {
$.selection = function(array, n) { ... };
}(jQuery));
一切正常。为什么原始示例不能像jQuery文档建议的那样添加到
jQuery.fn
对象中?当您使用$.fn.selection
时,该函数仅适用于jQuery对象,即$(“”).selection
当您使用$.fn.selection
该函数仅适用于jquery对象,即$(“”)。selection
$。fn是用于从$(“…”)创建jquery对象的原型
$是jQuery工厂和名称空间
所以
只能叫通
$.mymethod()
但是
可以这样叫
var divs = $(".mydivs");
divs.mymethod();
在第二个示例中,将使用jQuery选择作为对象调用mymethod,并删除所有匹配的div
请在此处阅读更多信息:
$。fn是用于jQuery对象的原型,该对象是从$(“..”创建的 $是jQuery工厂和名称空间 所以 只能叫通
$.mymethod()
但是
可以这样叫
var divs = $(".mydivs");
divs.mymethod();
在第二个示例中,将使用jQuery选择作为对象调用mymethod,并删除所有匹配的div
请在此处阅读更多信息:
这是否意味着我在插件兼容性方面做了正确的事情,直接向
jQuery
添加一个函数?如果您只需要一个不需要任何特定上下文(如text()、html()等)的函数,那么您的第二种方法就可以了。@Rich,您的第二种解决方案就像C#中的静态方法,它不适用于jQuery类型的对象,而是使用jQuery作为名称空间来放置方法。感谢David和Cybernate,这就是我一直在寻找的。这是否意味着我在插件兼容性方面做了正确的事情,直接向jQuery
添加一个函数?如果您只需要一个不需要任何特定上下文(如text()、html()等)的函数,那么您的第二种方法就可以了。@Rich,您的第二种解决方案就像C#中的静态方法一样,它不适用于jQuery类型的对象,而是使用jQuery作为名称空间来放置方法。