Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用JSON回复和jQuery从列表中删除_Javascript_Jquery_Json - Fatal编程技术网

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

Javascript 使用JSON回复和jQuery从列表中删除,javascript,jquery,json,Javascript,Jquery,Json,我有这个项目列表,我在底部有一个按钮,用于根据复选框删除其中一些项目。 我还收到一个jQuery get()的响应,其中包含表示新列表的元素。 因此,其余部分需要移除。 我的列表是这样建立的: <table style="float:left;width:100%"> <tbody> <?php foreach ($items as $item): ?> <tr> <div> &l

我有这个项目列表,我在底部有一个按钮,用于根据复选框删除其中一些项目。 我还收到一个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>
我现在想做的只是消除输入值(json的ID)不在json回复中的对应代码

你知道如何使用jQuery实现这一点吗?
谢谢

有几种不同的方法可以做到这一点。我有点喜欢查看您的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');

小提琴在动作中显示它:(或者如果你想感觉你正在删除它……)

PS,
标记在
之间没有位置——我想你需要反转
点……我在tr中有更多的元素,(为了可读性,我简化了表格)。我试着让这些元素一个接一个地显示出来,有什么建议吗?出于某种原因,它正在删除所有的行。@Ted:你有我可以看到的网页吗?或者你可以粘贴你所拥有的东西(也许是你自己制作的小提琴?)这是网站上的实际代码。而且它在JSFIDLE上也不起作用
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');