缓存的jQuery对象

时间:2013-08-07 12:43:08

标签: javascript jquery

我最近一直在开发一些JS重型网站,虽然我赞成大部分时间使用纯JS,jQuery毫无疑问有其用途,我现在主要依靠它来主要用于快速事件绑定/冒泡。我的问题是关于使用jQuery缓存对象以及如何最好地使用它们。

我发现自己在大多数js脚本中都按照这些方式做了一些事情。

jQuery.noConflict();

var doc = jQuery(document), // Root jQ object
    html = doc.children('html'), // Mainly to check modernizr classes
    container = html.find('.container'); // Base content container

/** module 1 **/
(function($, w, undefined) {

    container.on('click', 'button', function(e) {
        ...
    });

})(jQuery, window);

/** module 2 **/
(function($, w, undefined) {

    container.on('click', 'a.module', function(e) {
        // Occasionally creating further jQ objects in contextual situations
        var self = $(this);

        // Or is this better
        var clicked = container.find(this);
    });

})(jQuery, window);

正如你所看到的,我只有一个高级jQuery对象,我用它来遍历DOM,同时偶尔创建上下文需要它的新jQuery对象。我玩弄了使用插件jQuery.single的想法虽然我并不觉得有必要。

这实际上对我有什么好处,我觉得它更好,因为我只使用jQuery single创建最少数量的jQuery对象(参见第二个模块代码),尽管我不能确定。我希望这里的某个人能够阐明这是否可行,或者我是否应该坚持以前的方法,在每个闭包中创建jQuery对象?

我以前的方法示例

/** module 1 **/
(function($, w, undefined) {

    var container = $('.container');

    container.on('click', 'button', function(e) {
        ...
    });

})(jQuery, window);

/** module 2 **/
(function($, w, undefined) {

    var container = $('.container');

    container.on('click', 'a.module', function(e) {
        // Occasionally creating further jQ objects in contextual situations
        var self = $(this);
    });

    // Usually if I needed anything further outside the container
    // If create further objects
    var header = $('header');

})(jQuery, window);

0 个答案:

没有答案