如何重新应用jQuery选择器?

Chr*_*org 4 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.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
}
Run Code Online (Sandbox Code Playgroud)

是否有一个功能可以完成我正在寻找的refresh()线路?

T.J*_*der 7

实际上没有一个函数可以执行您所描述的内容,只需重新发出原始请求即可.

如果你有一个jQuery对象(比如你的row1),你可以使用这个未记录的机制来重新运行原始请求:

row1 = $(row1.selector, row1.context);
Run Code Online (Sandbox Code Playgroud)

......但同样,该selector属性没有记录(context记录在案),所以虽然它现在在1.7.1中工作,但它在1.7.2中可能不起作用.

一个更好的方法可能是只保留行的jQuery对象,只要你实际上正在使用它,但它取决于重新获取列表的成本以及你这样做的频率.