2010-02-25 93 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(); 
    }); 
});