使用jQuery选择前一个元素

时间:2010-02-25 17:15:00

标签: jquery jquery-selectors

嘿伙计们,这很简单,但我不能让它工作......等等!

我有很多LI的UL。在每个LI里面我有一个和两个:

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

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

我试过这样的事情:

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

});

但它根本不起作用。 :(我做错了什么?谢谢..

5 个答案:

答案 0 :(得分:5)

获得LI:

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

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

答案 1 :(得分:3)

li是你点击的锚点的父级,所以你可以这样做:

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

});

答案 2 :(得分:2)

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

试试。

答案 3 :(得分:1)

应该简单:

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

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

答案 4 :(得分: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();
  });
});