![](/img/trans.png)
[英]Carry over state from PrimeFaces onstart to oncomplete using JS / jQuery only
[英]how to create jquery function using onstart and oncomplete
我正在嘗試創建自己的jquery函數,我知道如何添加選項但不知道如何添加'onStart'或'onComplete'功能。
這是我目前所知道的:
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.
};
也就是說,如果屬性是在options
定義的並且實際上是一個函數,那么在適當的位置調用它。 指定的設定this
使用.call()
或.apply()
如果需要的話,並且包括任何參數。 是否根據需要與您的settings
對象集成。
只需擁有jQuery.noop
那些設置的默認值,然后您就可以知道使用apply()
或類似方法將該設置的值作為函數調用是安全的。
例如
jQuery.somefunctionname = function (options) {
var settings = {},
defaults = {
'someoption': 'somevalue',
'someoption2': 'somevalue2',
'someoption3': 'somevalue3',
'onStart': jQuery.noop,
'onComplete': jQuery.noop
}
settings = $.extend({}, defaults, options);
settings.onStart.apply(this);
//do something functional
alert("hey i'm a function");
settings.onComplete.apply(this);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.