使用jQuery使用JSON回复从列表中删除

时间:2011-09-22 14:31:16

标签: javascript jquery json

我有这个项目列表,我在底部有一个按钮,用于根据其复选框删除其中一些项目。 我还得到了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执行此操作的任何想法? 谢谢!

1 个答案:

答案 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/