我已经使用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&#39)。测试({ url:' another-url.php' });
// Call the load method
$('#element').test('load');
问题是,当我打电话给#34;加载" settings.url等于' default.php'而不是' another-url.php'。
是否可以像在OOP中那样处理这个问题,我的意思是,制作'设置' " class"的属性然后对该属性的所有更改都是持久的?
我想在伪代码中实现的目标:
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
}
}
这也将允许我拥有尽可能多的"实例"根据需要,每个人都有自己的设置值。
提前致谢:)
答案 0 :(得分:0)
因此,根据您的插件结构,您必须调用第一个init方法 因为当你调用$(“....”)。test('load')所以它不会调用init函数所以它将采用在第一次声明的默认url
或者插件内部总是调用init();它会解决你的问题
的
的(function( $ ) {
$.fn.test= function(method) {
var settings;
**init();** // call internally
init: function() {
var _defaults = {
option1: 'value1',
option2: 'value2',
option3: 'value3',
url: 'default.php'
};
settings = $.extend({}, _defaults, method);
},......
的