我正在编写一个 jQuery 插件,但遇到了一些关于变量的问题。例如,我的插件有以下骨架结构,它将作用于文本框。在我的 init 函数中,我想设置一个变量并将按键事件绑定(bind)到我的文本框。该按键事件需要调用另一个函数,其中我需要该变量。这可能吗?
(function($){
var methods = {
init : function(options){
return this.each(function(){
var $this = $(this);
var someVar = 'somevar';
$this.keypress(function(event){
//I want to call my customFunction
});
});
},
customFunction : function(){
//I am wanting to access 'someVar' here
};
$.fn.mynamespace = function(method){
//handle which method to call here
};
})(jQuery);
提前非常感谢。
最佳答案
在外部作用域中声明 myVar
,事实上 JavaScript 中的函数可能是 closures将允许您想要的工作:
(function($){
var someVar;
var methods = {
init : function(options){
return this.each(function(){
var $this = $(this);
someVar = 'somevar';
$this.keypress(function(event){
//I want to call my customFunction
});
});
},
customFunction : function(){
//You may access 'someVar' here
};
$.fn.mynamespace = function(method){
//handle which method to call here
};
})(jQuery);
编辑:但是,如果您想要存储特定于每个 HTML 元素的数据,则应使用 data()
jQuery 对象的方法,或 jQuery.data()
对于元素本身。例如:
(function($){
var someVar;
var methods = {
init : function(options){
return this.each(function(){
var $this = $(this);
$this.data('myCode.blargle','somevar');
$this.keypress(function(event){
//I want to call my customFunction
});
});
},
customFunction : function(){
var someVar = $(this).data('myCode.blargle');
// or $.data(this,'myCode.blargle');
};
$.fn.mynamespace = function(method){
//handle which method to call here
};
})(jQuery);
关于javascript - 使用 jQuery 保留函数之间的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4714901/