Я пытаюсь создать систему копирования / вставки для таблицы HTML, используя jQuery и плагин контекстного меню, и я пытаюсь однозначно назвать все вновь созданные строки.Итак, у меня есть функция, которая клонирует выбранную строку и вставляет новую строку выше:
function cloneAbove(TR) {
var newRow = $(TR).clone();
var lastID = $(TR).attr('id');
var newID = Number(lastID.substring(3))-0.1;
//See if that row already exists:
if($('#tr_'+newID).length){
alert('#tr_'+newID+' Exists');
//If it does exist, we divide the newID by 10 until we find one that doesn't:
var i = 0;
while(i < 1){
newID = newID/10;
if($('#tr_'+newID).length > 0){
i = 1;
}
}
}
$(newRow).attr('id','tr_'+newID);
$(TR).before(newRow);
$(".target").contextmenu(option);
}
Сначала она клонирует выбранную строку (то есть: '# tr_1'), вычитает 0,1 для идентификатора новой строки (то есть: '# tr_0.9'), то он должен проверить, чтобы увидеть, существует ли уже этот идентификатор - вот где моя проблема - если он существует, он входит в цикл для деления на 10, пока не найдет идентификатор, который не 't.
Вот пример таблицы:
<table id="table" border=1>
<tr class="target" id="tr_1" oncontextmenu="context('tr1')">
<td id="tr_1_1">Row1</td>
<td id="tr_1_2">Row1</td>
</tr>
<tr class="target" id="tr_2" oncontextmenu="context('tr2')">
<td id="tr_2_1">Row2</td>
<td id="tr_2_2">Row2</td>
</tr>
</table>
.length работает для «жестко закодированных» элементов, поскольку они существуют при загрузке страницы, но не обнаруживаютлюбой из вновь созданных элементов.Есть предложения?