2012-01-02 3 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

Начальный селектор, который позволил получить результирующий не хранится, так что вы можете повторно выполнить этот селектор:

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 меня. Heres the fiddle доказывает это: http://jsfiddle.net/Yq8sM/2/ – andlrc

+0

Этот подход по-прежнему хорош! http://jsfiddle.net/9kBXC/1/ – EvgeniyK

1

Объекты jQuery по существу являются Array из HTMLElements. Просто нажмите новые элементы, когда вы добавляете их:

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

Я не проверял эту цепь, но я считаю, appendTo() возвращает клонированный объект JQuery, [0] вернет соответствующий HTMLElement

Смежные вопросы