![](/img/trans.png)
[英]How can I make a function available throughout a jQuery plugin and all its internal methods?
[英]How to make settings (or options) in jQuery plugin available for all methods?
我已經使用jQuery幾個月了(我仍然是Mootools的門徒),現在我正在嘗試在jQuery中創建我的第一個插件。
問題是,我想在插件中包含一些方法,並且我希望那些方法能夠訪問插件的所有“屬性”。
例如:
(function( $ ) {
$.fn.test= function(method) {
var settings;
init: function() {
var _defaults = {
option1: 'value1',
option2: 'value2',
option3: 'value3',
url: 'default.php'
};
settings = $.extend({}, _defaults, method);
},
load: function(){
$.ajax({
cache : false,
type : "GET",
url : settings.url,
dataType: "json",
success : function(response){
console.log(response);
},
error : function(response) {
alert("Error loading data.");
}
});
}
}
}( jQuery ));
現在調用插件本身://初始化$('#box1')。test({url:'another-url.php'});
// Call the load method
$('#element').test('load');
問題是,當我調用“加載”時,settings.url等於“ default.php”而不是“ another-url.php”。
我是否可以像在OOP中那樣處理此問題,我的意思是將“設置”設為“類”的一個屬性,然后對該屬性的所有更改都將保持不變?
我想用偽代碼實現什么:
Class Test{
// Specify default settings
private settings = // some default values;
// Constructor
public Test(specificSettings){
//Code to merge/update specificSettings with settings
}
public load(){
// If I access this.settings in here, I will get the
// updated settings and not the default one
}
}
這也將使我可以根據需要具有多個“實例”,每個實例都有其自己的設置值。
提前致謝 :)
因此,根據您的插件結構,您必須調用第一個init方法,因為當您調用$(“ ....”)。test('load')時,它將不會調用init函數,因此它將采用默認網址,該網址在第一次
或者在插件內部始終調用init(); 它將解決您的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.