Javascript 如何使用onstart和oncomplete创建jquery函数
我正在尝试创建自己的jquery函数,我知道如何添加选项,但不知道如何添加“onStart”或“onComplete”功能 这就是我目前所知道的:Javascript 如何使用onstart和oncomplete创建jquery函数,javascript,jquery,Javascript,Jquery,我正在尝试创建自己的jquery函数,我知道如何添加选项,但不知道如何添加“onStart”或“onComplete”功能 这就是我目前所知道的: jQuery.somefunctionname = function (options) { var settings = {}, defaults = { 'someoption': 'somevalue', 'someoption2': 'somevalue2', 'someoption3'
jQuery.somefunctionname = function (options) {
var settings = {},
defaults = {
'someoption': 'somevalue',
'someoption2': 'somevalue2',
'someoption3': 'somevalue3'
}
settings = $.extend({}, defaults, options);
//do something functional
alert("hey i'm a function");
}
但是,如果我希望用户能够在我的函数之前(onStart)和之后(onComplete)添加他们自己的代码,我应该编写什么代码
用户应该能够这样写:
$.somefunctionname({
'someoption' : 'a',
'someoption2' : 'b',
'someoption3' : 'c',
'onStart' : function() {
//whatever user want when my function started
},
'onComplete' : function() {
//whatever user want when my function ended
} });
jQuery.somefunctionname = function (options) {
if (typeof options.onStart === "function")
options.onStart.call(this);
// other function code here
if (typeof options.onComplete === "function")
options.onComplete();
// OR
options.onComplete.call(this);
// OR
options.onComplete.apply(this, argsArrayIfDesired);
// etc.
};
thx;) 只需为的那些设置设置一个默认值,然后您就可以知道,使用或类似方法将该设置的值作为函数调用是安全的 e、 g
在您的职能范围内,执行以下操作:
$.somefunctionname({
'someoption' : 'a',
'someoption2' : 'b',
'someoption3' : 'c',
'onStart' : function() {
//whatever user want when my function started
},
'onComplete' : function() {
//whatever user want when my function ended
} });
jQuery.somefunctionname = function (options) {
if (typeof options.onStart === "function")
options.onStart.call(this);
// other function code here
if (typeof options.onComplete === "function")
options.onComplete();
// OR
options.onComplete.call(this);
// OR
options.onComplete.apply(this, argsArrayIfDesired);
// etc.
};
也就是说,如果属性是在
选项中定义的,并且实际上是一个函数,那么在适当的点调用它。如果需要,使用.call()
或.apply()
指定此的设置,并包括任何参数。与设置集成
对象或不按需要集成。它给了我错误“settings.onStart未定义”。我不知道为什么。