Если вы имеете в виду, что беспокоитесь о дублированных элементах div, то происходит следующее: когда вы clone(true)
копируете всю строку, включая элемент <div class="jsonSuggestResults">
, который находится внутри нее. Затем вы получаете новый jsonSuggestResults
при создании экземпляра нового jsonSuggest, поэтому каждая строка заканчивается еще одним div.
Вы можете удалить div из клона вручную или просто создать целый ряд с нуля. Но, вероятно, самым простым будет взять клон div без документа в самом начале сценария, прежде чем добавлять какие-либо jsonSuggests, и клонировать клон для каждой новой строки, которую вы хотите добавить.
Также:
$newTr.find('input[id^=foods]').attr('id', function(){
var newID = 'foods' + newRowNum ;
$(this).attr('id',newID).attr('name',newID).attr('class',newID);
});
Это очень странно и, вероятно, не то, что вы хотели сделать. Когда вы передаете функцию в attr
, она должна возвращать значение атрибута, которое вы хотите установить для каждого элемента по очереди; вы не должны изменять элемент внутри функции. Вышеуказанное эквивалентно более очевидному:
var newID= 'foods'+newRowNum;
$newTr.find('input[id^=foods]').attr('id',newID).attr('name',newID).attr('class',newID);
или
$newTr.find('input[id^=foods]').attr({id: newID, name: newID, 'class': newID});
Аналогично:
$newTr.insertAfter('#tb1 tbody>tr:last');
Почему бы и нет:
$newTr.appendTo('#tb1 tbody');