2010-02-25 90 views
1

嘿,这很简单,但我不能让它工作......等等!使用jQuery选择以前的元素

我有许多LI的UL。里面每个L1我有一个和两个:

<ul>  
    <li><span>Qualification</span> - <a class="editItem" href="get/14">edit</a> | <a class="deleteItem" href="delete/14">delete</a></li> 
</ul> 

当我点击删除锚点,我想隐藏的李。我如何选择LI?

我想是这样的:

$(".deleteItem").click(function(e) { 
    $(this).parent().find("li").hide(); 
    // or 
    $(this).prev().prev().prev().hide(); 

}); 

不过,这并不在所有的工作。 :(我是什么做错了谢谢..

+0

谢谢大家!出于某种原因,在我的ajax函数中使用$(this)不起作用。但以上所有答案都是正确的。再次感谢你! – 2010-03-01 16:57:35

回答

5

为了得到李:

$(".deleteItem").click(function(e) { 
    $(this).closest("li").hide(); 
}); 

.prev()是指兄弟姐妹,在这种情况下<li>是父母给的链接,.closest()得最近的父匹配。选择

2
$(".deleteItem").click(function(e) { 
    $(this).closest('li').hide(); 
}); 

试一下

3

李是你点击锚的父母,所以你可以这样做:

$(".deleteItem").click(function(e) { 
    e.preventDefault(); 
    $(this).parent().hide(); 

}); 
1

应该是简单的:

$(本).parent()隐藏();

LI是A元素的父亲。其他人是兄弟姐妹。 上一个用于查找以前的兄弟姐妹,所以它不会给你父母。

1

看来您需要关闭从数据库中删除记录本身的请求。因此,而不是专注于只是隐藏li,你不应该忽视你的链接的初衷:

$(".deleteItem").click(function(e){ 
    // prevent page-change 
    e.preventDefault(); 
    // ask server to delete this record 
    $.post($(this).attr("href"), function(result){ 
    // remove this record upon server-response 
    $(e.target).closest("li").slideUp().remove(); 
    }); 
});