Javascript jQuery更新引用DOM元素的变量

Javascript jQuery更新引用DOM元素的变量,javascript,jquery,dom,Javascript,Jquery,Dom,我有两个变量,如下所示: var carousel = $('div.carousel ul'); var pics = carousel.children('li'); 稍后,使用insertBefore()将一些新的添加到旋转木马中,但是我的pics变量现在已过期,因此我必须调用pics=carousel.children('li')再次在我的函数中 有没有更好的方法在不重复遍历DOM的情况下执行此操作?jQuery有一个add()函数,它将接受一个参数并将其添加到所选项目的列表中。您可以

我有两个变量,如下所示:

var carousel = $('div.carousel ul');
var pics = carousel.children('li');
稍后,使用
insertBefore()
将一些新的
  • 添加到旋转木马中,但是我的
    pics
    变量现在已过期,因此我必须调用
    pics=carousel.children('li')再次在我的函数中


    有没有更好的方法在不重复遍历DOM的情况下执行此操作?

    jQuery有一个
    add()
    函数,它将接受一个参数并将其添加到所选项目的列表中。您可以调用
    pics.add(newli)
    任何时候向DOM添加新列表项时。

    为什么
    pics=carousel.children('li')如此耗时


    如果列表已更改,则可以再次执行此操作,但如果确实确定要避免此操作,请尝试将2个新创建的
    li
    添加到新数组中,然后向其中添加图片

    我喜欢存储jQuery对象,以避免到处都有选择器。因此,我创建了一个微插件,用
    update
    函数扩展jQuery对象。你可以找到

    以下是代码供参考:

    (function ( $ ) {
      $.fn.update = function(){
        var newElements = $(this.selector),i, oldLength = this.length;
        this.length = newElements.length;
        for(i=0;i<this.length;i++){
          this[i] = newElements[i];
        }
        for(;i<oldLength;i++){
          this[i] = undefined;
        }
        return this;
      };
    })(jQuery);
    
    (函数($){
    $.fn.update=函数(){
    var newElements=$(this.selector),i,oldLength=this.length;
    this.length=newElements.length;
    
    对于(i=0;我必须+1你才能摆脱所有那些6。无论如何,知道这一点很酷。我不知道jquery有这样的东西。