【问题标题】:Invoking a method on multiple cached DOM elements在多个缓存的 DOM 元素上调用方法
【发布时间】:2016-03-05 15:02:02
【问题描述】:

在使用 jQuery 操作 DOM 时,我总是尝试缓存 DOM 选择。而且我一直在想是否可以简写这样的方法调用:

var $cached_1 = $('#elem1'),
    $cached_2 = $('#elem2');

//For example i need toggle both I write like : 
$cached_1.toggle();
$cached_2.toggle();

没有缓存很容易:

$('#elem1, #elem2').toggle();

但是缓存的选择呢?是否有类似的方法来调用存储在变量中的几个单独选择的方法?

【问题讨论】:

    标签: javascript jquery caching


    【解决方案1】:

    是的,有类似的方法可以做到这一点,

    var elems = $('#elem1').add('#elem2');
    elems.toggle();
    

    你必须使用.add() 来实现你想要的。

    【讨论】:

    • "#elem1, #elem2"有什么区别?
    • 认为你想要$cached_1.add($cached_2)。否则它不会回答问题
    • @ÁlvaroGonzález 他询问了使用多重选择器的另一种方法。 And to:OP 你也可以缓存从多个选择器返回的元素。
    • 我是一个真正的问题,我想确保我没有遗漏任何东西。如果您最终得到一个具有相同节点集合的 jQuery 元素,那么您只会使代码更难理解而没有任何好处。这看起来像是“我如何在没有锤子的情况下敲钉子”类型的问题之一。
    【解决方案2】:

    如果这些将始终用作集合,请存储该集合。

    var $els = $('#elem1, #elem2');
    $els.toggle();
    

    或者如果你想组合以前缓存的变量:

    $cached_1.add($cached_2).toggle();
    

    【讨论】:

    • 这也是答案。但如果我分别使用其中的 2 个,其他的我作为一个集合存储。有这么多缓存的选择器不是很糟糕吗?
    • OK.. 以您真正想要使用add() 的方式进行更新,以避免根据其他答案再次进行 DOM 搜索
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 2011-11-10
    相关资源
    最近更新 更多