Есть ли способ указать jquery скопировать часть дерева dom и использовать его как фрагмент для вставки?
Да: clone
.(Вам даже не нужен jQuery для этого; cloneNode
является частью DOM API.) Если у вас есть какие-либо значения id
в том, что вы клонируете, вам нужно будет выполнить итерацию порезультат их изменения, конечно, так как id
s должны быть уникальными.Но он идеально подходит для таких вещей, как строки таблиц и т. П.
При загрузке страницы вы можете получить один из реальных, клонировать его (не прикрепляя его к документу), очистить его от всего, что вам не нужнонужно, а потом просто продолжать клонировать эту модель.Помогает отсоединить ваш JavaScript в некоторой степени от вашей разметки.
Пример:
HTML:
<table>
<tbody>
<tr><td>I'm a row in the table</td></tr>
</tbody>
</table>
JavaScript:
jQuery(function($) {
var counter = 10,
rowModel;
// Get the row model, clone it, remove the
// content we'll replace anyway.
rowModel = $("tr:first").clone();
rowModel.find("td:first").empty();
// Do our first tick
tick();
// Use the model to append to the table
function tick() {
var clone = rowModel.clone();
clone.find("td:first").html("Added at " + new Date());
$("tbody:first").append(clone);
// Again?
if (--counter > 0) {
setTimeout(tick, 500);
}
}
});
Live copy
Очевидно, что это быстро и грязно, но вы поняли идею.Если вы используете атрибуты data-xyz
(разрешено в HTML5), name
s, class
es и т. Д., Вы можете избежать привязки кода слишком близко к вашей структуре.