首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jQuery缓存DOM元素

使用jQuery缓存DOM元素
EN

Stack Overflow用户
提问于 2013-03-22 03:10:17
回答 1查看 2.6K关注 0票数 0

我正在为命名约定而苦苦挣扎,我想为作为DOM元素的缓存变量的任何变量想出一个约定。

到目前为止,我已经使用了以下内容:

代码语言:javascript
复制
window.x = $('#x');

当然,这将它放在全局范围内,但根据我的约定,这是可以的。

但问题是,查看window.x并不能告诉我它是一个缓存变量$('#x')。所以现在我想要尝试的是使用jQuery插件技术来存储这些值。类似于:

代码语言:javascript
复制
;(function($, window, undefined) {
    $.fn.x = function() {
        return $('#x');
    }
})(jQuery, window);

这样,我就可以引用$x.val(),它会立即告诉我$x是$('#x') DOM元素的缓存。

问:我如何创建一个名为x的插件,它是$('#x')选择器的返回值?我做得对吗?现在,你可能会说(在你最好的Office Space配音中)“这是一个可怕的想法”,但我只是在试验。

EN

回答 1

Stack Overflow用户

发布于 2013-03-22 03:21:55

我想不出缓存DOM元素的理由。对于初学者来说,如果您使用的是jQuery id选择器,那么它们是最快类型的选择器,因此不需要缓存DOM元素。当您在示例中添加到全局名称空间时,您只是创建了一个快捷方式或别名,用于选择id为"x“的元素。在我的代码中,我使用立即调用的函数表达式(IIFE)来封装代码的单个作用域部分。如果要重复引用全局变量,我会将它们放在开头。下面是一个例子:

代码语言:javascript
复制
// An immediately-invoked function expression wraps all JavaScript code to keep it scoped to this module.
(function ($) {
    // Closure-local variables.
    var $grid;
    var $table;
    // etc.

    // Bind an initialize event. Will be called when this code needs to execute.
    $(document).on('initialize', initialize);

    // Initialize the global variables.
    function initialize() {     
        $grid = $('#grid');
        $table = $('#table');

        // other setup...
    }

})(jQuery);

我使用了一个初始化事件,该事件在页面初始加载时触发,它设置全局变量和生命周期。IIFE使您的代码与所有其他代码分离,“缓存”元素只是在initialize事件中设置的全局变量,因此您不必重复调用它们。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15556119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档