我正在尝试制作一个jquery插件。它是一个验证插件。表单提交后,我想用ajax发送数据。我创建了一个验证构造函数并通过原型继承它。但是我不能在jquery命名空间之外使用默认值。
我想使用ops变量作为全局变量,因为我可以从javascript原型访问它。所以,我需要一种有效的方法来做到这一点。
(function($){
$.fn.validation = function(options){
var ops = $.extend({}, $.fn.validation.defaults, options);
//wanna make ops as global as I can access from prototype
};
}(jQuery));
$.fn.validation.defaults = {
url: 'validation.php',
methodType: 'post',
};
function Validate(){ // constructor
this.error = [];
}
Validate.prototype = {
constructor : Validate,
submitForm : function(currentForm){
var formData = new FormData(currentForm);
$.ajax({
url: opt.url, // wanna call like that.
type: opt.methodType,
// Don't wanna use $.fn.validation.defaults.methodType
success: function(data){
},
data: formData,
cache: false,
contentType: false,
processData: false
});
}
};
答案 0 :(得分:2)
在jquery对象ops
下定义变量$.ops
,并从扩展的jquery
函数$.fn.validation.options
(function($){
$.ops = {};
$.fn.validation = function(options){
$.ops = $.extend({}, $.fn.validation.defaults, options);
//wanna make ops as global as I can access from prototype
};
// expose the ops object to outside world
$.fn.validation.options = function () {
return this.ops;
}
}(jQuery));
答案 1 :(得分:1)
您可以在ops
函数之外简单地声明document.ready
,将其保留在global scope
中,然后在document.ready
函数中启动local scope
函数ops
现在,您可以在任何local scope
中使用ops
。
注意:请注意,document.ready
将始终声明,但不会始终启动。如果您的ops
功能尚未调用undefined
,则// Global scope
var ops;
(function($){
$.fn.validation = function(options){
/// Local scope
ops = $.extend({}, $.fn.validation.defaults, options);
};
}
。
Listener