我写了这样的addrow事件......
$('.addRow').click(function(){
var $newTr = $('#tb1 tbody>tr:last').clone(true);
$newTr.insertAfter('#tb1 tbody>tr:last');
newRowNum += 1;
$newTr.find('input[id^=foods]').attr('id', function(){
var newID = 'foods' + newRowNum ;
$(this).attr('id',newID).attr('name',newID).attr('class',newID);
});
$('input[id=foods'+ newRowNum +']').jsonSuggest(
function(text, wildCard, caseSensitive, notCharacter) {
rez = $.ajax({
type: 'GET',
url: 'getFoodJSON.jsp',
data: 'foods=' + text,
dataType: 'json',
async: false
});
return eval(rez.responseText);
},
{ ajaxResults:true
});
刚刚克隆的新行包括一个表单字段,我已经分配了新的表单字段ID,并希望在这个新的创建表单字段中使用suggestbox函数,但是在单击addrow按钮3次之后,似乎基于变量newRowNum多次进行,我使用萤火虫,看到这样......你能不能告诉我如何停止累积这个功能?非常感谢你。
笼
<td height="30">
<input id="foods3" class="foods3" type="text" maxlength="30" size="35" name="foods3" autocomplete="off"/>
<div class="jsonSuggestResults" style="top: 203px; left: 283.55px; width: 232px; display: none;"/>
<div class="jsonSuggestResults" style="top: 203px; left: 283.55px; width: 232px; display: none;"/>
<div class="jsonSuggestResults" style="top: 203px; left: 283.55px; width: 232px; display: none;"/>
答案 0 :(得分:1)
假设你的意思是你担心重复的div,发生的事情是当你clone(true)
复制整行时,包括其中的<div class="jsonSuggestResults">
元素。然后在实例化新的jsonSuggest时获得一个新的jsonSuggestResults
,因此每行最后会有一个div。
您可以手动从克隆中删除div,或者只是从头创建整行。但最简单的方法是在添加任何jsonSuggests之前在脚本的最开始部分取出div的文档外克隆,并为要添加的每个新行克隆克隆。
此外:
$newTr.find('input[id^=foods]').attr('id', function(){
var newID = 'foods' + newRowNum ;
$(this).attr('id',newID).attr('name',newID).attr('class',newID);
});
这很奇怪,可能不是你的意思。当你将函数传递给attr
时,它应该依次返回你想要为每个元素设置的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');
答案 1 :(得分:0)
无法清楚地了解您,但您可以查看每次点击$('input[id=foods' + newRowNum + ']')
获得的项目数量吗?
您似乎使用此代码input[id^=foods]
$newTr.find('input[id^=foods]').attr('id'...
设置了相似的ID