javascript - 使用 jQuery 保留函数之间的值

标签 javascript jquery scope

我正在编写一个 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/

相关文章:

javascript - 在 jQuery 中隐藏/显示 div 的子级

javascript - 在按钮上单击交换正在使用 "document.createElement(' 脚本加载的 JS 文件')

jquery - 如何使用 JQuery 发布 JSON 数据?

java - 从不同类 java 访问 jdialog 的一个实例

javascript - 在 angular2 中使用 http 访问 Amazon s3

javascript - 我想使用 azure 媒体服务进行视频录制和流式传输

javascript - DOM 为子 Javascript 分配一个 id

javascript - 是否可以将 jQuery 附加到加载的页面?

javascript - 访问命名空间内的全局变量

php - <?php> 标记内的每个 PHP 代码片段是否都有自己的变量范围?