jQuery处理来自ajax响应的表行
问题描述:
我有一个选择下拉菜单,我可以显示/从我的脚本除了一个条件输出。我遇到的麻烦是删除/删除由$ .each创建的行。我对js仍然很陌生,我在网上搜索解决方案,但仍然无法实现。这是我的代码到目前为止。jQuery处理来自ajax响应的表行
<table id="view_programs" class="table table-striped table-bordered">
<thead>
<tr>
<th>Year</th>
<th width="12%">Action</th>
</tr>
</thead>
<tbody>
<tr id="toBeRemoved">
<td colspan="2">No program selected.</td>
</tr>
</tbody>
</table>
脚本
if(selectedValue == '') {
$("#delbutton").hide();
$("#toBeRemoved td").remove();
$("#toBeRemoved").append(
$("<td colspan='2'>").html("No program selected.")
).appendTo('#view_programs');
}
else {
$.ajax({
url: '<?php echo site_url("query.php");?>',
type: 'post',
data: {option: selectedValue},
dataType: 'json',
success: function(response) {
$("#delbutton").show().attr("href", "delete/program/"+encodeURIComponent(selectedValue));
if(jQuery.isEmptyObject(response)) {
$("#toBeRemoved td").remove();
$("#toBeRemoved").append(
$("<td colspan='2'>").html("No records found.")
).appendTo('#view_programs');
}
else {
var trHTML = '';
$.each(response, function(key, value) {
trHTML += "<tr><td>"+value+"</td><td>"+value+"</td></tr>";
});
$('#view_programs').append(trHTML);
}
console.log(response);
}
});
}
更新: 取得的成绩,我想感谢西蒙先生对我的脱落一些轻。我怀疑我的代码可能会更好,所以我愿意接受任何建议。
改变了这种
<tbody>
<tr id="toBeRemoved">
<td colspan="2">No program selected.</td>
</tr>
</tbody>
到此
<tbody class="toBeRemoved">
<tr>
<td colspan="2">No program selected.</td>
</tr>
</tbody>
这
$('#view_programs').append(trHTML);
到此
$('.toBeRemoved').append(trHTML);
并把所有的#toBeRemoved到.toBeRemoved
答
你追加的表行的#view_programs
末,</tbody>
元素之后,这意味着...所以他们没有要删除我猜#toBeRemoved
ID ?
如果要删除多行,请确保使用一个类(即.toBeRemoved
)而不是一个id。只有一个元素是唯一标识符。
+0
Ohhhhhh你的第一句话就是这样做的。它让我感到轻松。我太专注于行本身。我现在开始工作了,但现在我开始认为我的代码可能会更好,嘿嘿。我更新了我的帖子,并显示我改变了什么。 – Meltdowner 2015-02-06 16:31:51
你能展示所有相关的html代码吗? – indubitablee 2015-02-06 14:03:58
您总是从$(“#toBeRemoved”)中删除,但yoyr每个函数都在$('#view_programs')中直接创建TR的问题 – nanndoj 2015-02-06 14:07:39
问题不清楚,请明确提出代码和问题,以便我们可以帮助您.. – Alok 2015-02-06 14:08:23