2

我在元素中有一个链接,<li>并希望在<li>单击链接时删除该元素。这是我的代码:

<li id='i80'>
 <div class='singleitem'>
  <img src='/css/images/image.png' width='30' height='30' />
  <div id='listtext'><h1>Title</h1></div>
  <a class='delete' id='80' href='#'></a>
  <div id='helper'></div>
 </div>
</li>

还有我的 Jquery 代码:

$(".delete").click(function(e){
 var del_id = $(this).attr('id');
 e.preventDefault();
 $.post("/add/delete.php", { iid: del_id } ,function(data){
  if(data.status == 'deleted');
   {
     $(this).closest("li").remove();
   }
 });
});

ajax 工作正常,并且“已删除”状态正在正确发回,但是,涉及删除父级的一行li不起作用。有任何想法吗?谢谢。

编辑:

我注意到我动态添加到现有列表中的新列表项ul在这里不起作用。那是因为这只是在页面最初加载时加载,然后不适用于动态更新的内容?

4

4 回答 4

5
$(".delete").click(function(e){
 var del_btn = $(this);              // cahed
 var del_id = del_btn.attr('id');
 e.preventDefault();
 $.post("/add/delete.php", { iid: del_id } ,function(data){
  if(data.status == 'deleted');
   {
     del_btn.closest("li").remove(); // used
   }
 });
});


编辑 以适应 OP 提出的附加问题。
使用如下.on()方法:

$(".singleitem").on('click', 'a.delete', function(e){
 var del_btn = $(this);              // cahed
 var del_id = del_btn.attr('id');
 e.preventDefault();
 $.post("/add/delete.php", { iid: del_id } ,function(data){
  if(data.status == 'deleted');
   {
     del_btn.closest("li").remove(); // used
   }
 });
});
于 2012-04-29T19:06:22.840 回答
4

ajax 块中的 $(this) 对象不是 $(".delete") 对象。您将需要执行以下操作:

$(".delete").click(function(e){
 var $del_button = $(this);
 var del_id = $(this).attr('id');
 e.preventDefault();
 $.post("/add/delete.php", { iid: del_id } ,function(data){
  if(data.status == 'deleted');
   {
     $del_button.closest("li").remove();
   }
 });
});
于 2012-04-29T19:05:54.233 回答
0

试试 $(this).parent().remove();

(虽然感觉就像锯掉你坐在的树枝......)

于 2012-04-29T19:05:57.327 回答
0

尝试以下,你需要引用父

$(this).parent().remove()
于 2012-04-29T19:06:01.987 回答