(function($) {
$.fn.myFunction = function(config) {
var defaults = {
setting1: 'myDiv',
setting2: ''
};
var config = $.extend(defaults, config);
//code here
};
})(jQuery)
$(document).ready(function() {
$.fn.myFunction({
setting1: 'myDiv',
setting2: ''
});
});
这就是我一直在使用jQuery插件的方式,但是我最近了解到应该像这样使用它:
$('#myDiv').myFunction({
setting1: 'myDiv',
setting2: ''
});
1)我认为这允许将$(this)用于$(‘#myDiv’)?
2)是否需要$(document).ready(function()?
3)我使用此jQuery函数的方式是否有害?
4)如果$(‘#myDiv’).myFunction()是正确的用法,如果它只是在准备好文档时运行的函数,您将如何调用该函数-请在此处查看我的用法:https://stackoverflow.com/a/12316349/1455709.这仅仅是一个不正确的用法吗?功能?
解决方法:
调用$.fn.myFunction()和调用$(‘#myDiv’).myFunction()是两件事.没有对与错-这取决于您在做什么.
调用$.fn.myFunction()
这本质上是一个静态函数,可以根据需要使用它.在jQuery世界中,.fn就像.prototype一样,因此$.fn.myFunction()就像调用jQuery.prototype.myFunction()一样.这是允许的,但它是与特定jQuery对象无关的静态函数调用.如果您只想进行静态函数调用,则可以执行此操作,但这通常不是jQuery原型的使用方式,我通常不建议这样做.如果您只想使用静态函数并要使用jQuery命名空间,则可以执行以下操作:
$.myFunction = function(args) {/* your code here */};
然后将其命名为:
$.myFunction();
由于根本不需要使用原型.
调用$(‘#myDiv’).myFunction()
原型(例如,jQuery世界中的.fn可以用于向实际jQuery对象添加方法的情况.
执行此操作时,$(‘#myDiv’).myFunction()是实时jQuery对象的成员函数.您可以在myFunction()实现中引用此对象,它将是一个jQuery对象,在这种情况下,该对象包含与id =“ myDiv”相对应的DOM对象.如果您从方法中返回jQuery对象,则也可以使用链接.
使用哪个?
如果您的代码在jQuery对象上运行,则它应该是实时jQuery对象上的方法,并且应该访问该方法以获取jQuery对象实例数据,并且应将其声明为$.fn.myFunction = function(){} ;并将其称为$(‘#myDiv’).myFunction()`.
如果您的代码不能在jQuery对象上操作,而只是您调用的实用程序函数,而并非总是在jQuery对象上操作,那么您应该将其声明为$.myFunction = function(){};.并且应该将其称为$.myFunction().