【问题标题】:caching selectors in jQuery [duplicate]在jQuery中缓存选择器[重复]
【发布时间】:2016-03-18 18:55:11
【问题描述】:

缓存 jquery 选择器是在分配时保留该选择器的动态副本还是仅保留该选择器?我的意思是我将变量缓存在文档顶部,然后尝试使用它,但它不起作用。

var $cell = $('#grid .cell');

// much later in code

$cell.each(function (index) {
  // random code
});

如果我更改 jquery 选择器 $('#grid .cell').each().. 的变量,它就可以工作。我能想到的唯一原因是选择器的内容在我分配变量后发生了变化

【问题讨论】:

    标签: javascript jquery variables


    【解决方案1】:

    缓存 jquery 选择器是在分配时保留该选择器的动态副本还是仅保留该选择器?

    没有。

    当您向 HTML 页面添加更多内容时,它不会重新评估。

    即使您更改页面内容并添加更多可以匹配选择器的元素,选择器也会具有相同的值。检查this

    【讨论】:

      【解决方案2】:

      变量 $cell 的值在您的“var”语句中声明,并且永远不会更新。

      查看此 sn-p 以获得真正的逐步视觉效果。

      var $x = $('.x');
      
      setInterval(function(){
        $('.content').append('<div class="x">');
        console.log($x);
      }, 1000);
      

      在第一个语句中,$x 是所有匹配元素的选择——在本例中是无。在循环中,我每秒都会向文档添加一个新的匹配元素,但由于我从不更新 $x 的值,它会记录相同的确切数据。

      完整的 JSFiddle:http://jsfiddle.net/kd2yvjje/5/embedded/result/

      【讨论】:

        猜你喜欢
        • 2012-08-29
        • 1970-01-01
        • 2017-07-23
        • 2012-10-07
        • 2016-02-23
        • 2013-06-17
        • 2018-08-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多