我有这个项目列表,我在底部有一个按钮,用于根据其复选框删除其中一些项目。 我还得到了jQuery get()的响应,其中包含代表新列表的元素。 因此,其余部分需要删除。 这就是我的列表的构建方式:
<table style="float:left;width:100%">
<tbody>
<?php foreach ($items as $item): ?>
<tr>
<div>
<td ?>;
<input type="checkbox" name="item_<?php echo $item['NAME'];?>" value="<?php echo $item['ID'];?>" />
</td>
</div>
</tr>
<?php endforeach; ?>
</tbody>
我使用get()函数并在json中获得以下回复。
[{"ID":"2","EMAIL":"xxxxx@hotmail.com","DATETIME":"2011-12-12 03:20:01"},{"ID":"4","EMAIL":"xxxxx@gmail.com","DATETIME":"2011-10-09 01:15:22"}"]
我现在要做的就是消除输入值(即json的ID)不在json回复中的对应。
有关如何使用jQuery执行此操作的任何想法? 谢谢!
答案 0 :(得分:1)
有几种不同的方法可以做到这一点。我有点像通过你的json响应,标记那些被确认的,删除那些未经证实的,并删除已确认的标志。 e.g。
var json = [{'id':'2','email':... }];
// first, flag what we DO have
$.each(json,function(n,r){
var $i = $(':input[value="' + r.ID + '"]');
if ($i.length > 0){
$i.addClass('ajax-confirmed');
}
});
// delete what hasn't been flagged
$(':input:not(.ajax-confirmed)').each(function(m,r){
var $row = $(r).closest('tr');
$row.remove();
});
// then remove the flag (cleanup)
$(':input.ajax-confirmed').removeClass('ajax-confirmed');
小提琴显示实际效果:http://jsfiddle.net/v9paf/(或者,如果您想要删除它... http://jsfiddle.net/v9paf/1/)