如何重新应用jQuery选择器?

如何重新应用jQuery选择器?,jquery,Jquery,我有一个javascript函数,它选择几个元素,然后执行一些DOM操作。当DOM操作涉及添加更多与初始选择器匹配的元素时,我希望重新应用它们以包含新元素 var row1 = table.find("tr.row1 td"); var row2 = table.find("tr.row2 td"); var row3 = table.find("tr.row3 td"); for(...) { if() {//Some condition is met table.chi

我有一个javascript函数,它选择几个元素,然后执行一些DOM操作。当DOM操作涉及添加更多与初始选择器匹配的元素时,我希望重新应用它们以包含新元素

var row1 = table.find("tr.row1 td");
var row2 = table.find("tr.row2 td");
var row3 = table.find("tr.row3 td");

for(...) {
   if() {//Some condition is met
       table.children().each(function(row) {
          row.append(row.children().eq(5).clone());
       });
       row1.refresh(); // I'd like something here like refresh, rather than row1 = table.find("tr.row1 td");
    }
    //Code that uses row1, row2, and row3
}

是否有一个函数可以执行我在
refresh()
行中查找的功能?

未存储允许获取结果集的初始选择器,因此您可以重新执行此选择器:

row1 = table.find("tr.row1 td");

实际上,没有一个函数可以实现您所描述的功能,您只需重新发出原始请求

如果您有一个jQuery对象(如
行1
),则可以使用此未记录的机制重新运行原始请求:

row1 = $(row1.selector, row1.context);
…但是,
选择器
属性是未记录的
上下文
已记录在案),因此,它可能在1.7.2中不起作用


更好的方法可能是,只要您实际使用jQuery对象,就只保留行中的jQuery对象,但这取决于重新获取列表的成本以及这样做的频率。

jQuery对象本质上是
HTMLElements
数组。添加新元素时,只需按一下即可:

 row1.push(row.children().eq(5).clone().appendTo(row)[0]);
我没有测试此链,但我相信
appendTo()
将返回克隆的jQuery对象,
[0]
将返回相应的
HTMLElement