2012-01-02 73 views
2

我有選擇幾個元素JavaScript函數,然後執行一些DOM操作。當DOM操作涉及添加更多匹配初始選擇器的元素時,我想重新應用它們以包含新元素。如何重新應用jQuery選擇器?

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()行?

回答

3

,允許獲得ResultSet中的初始選擇不會被保存,所以你可以重新執行這個選擇:

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

是不是真的,做你所描述什麼功能,你只要重新發出原始請求。

如果你有一個jQuery對象(如您row1),你可以使用這個無證機制重新運行原來的請求:

row1 = $(row1.selector, row1.context); 

...但再次重申,selector屬性是無證context是記錄)等while it works now in 1.7.1,它很可能不是在1.7.2工作。

一個更好的方法可能是隻保留行的jQuery對象,只要你實際上對它做了什麼,但它取決於重新獲取列表的成本以及你多頻繁地。

+0

快4我。繼承人的小提琴證明它:http://jsfiddle.net/Yq8sM/2/ – andlrc 2012-01-02 16:58:47

+0

這個方法還是不錯的! http://jsfiddle.net/9kBXC/1/ – EvgeniyK 2013-11-01 12:22:47

1

jQuery的對象是基本上HTMLElements一個Array。剛推新的元素,當你添加它們:

row1.push(row.children().eq(5).clone().appendTo(row)[0]); 

我沒有測試這條產業鏈,但我相信appendTo()將返回克隆jQuery對象,[0]將返回相應的HTMLElement