jquery
2012-12-27 86 views 1 likes 
1

JS選擇第一父

$(".deletable").live('click',function(){ 
     $(this).parent().effect('explode', 500, function(){ 
      $(this).parent().remove(); 
     }) 
}); 

HTML

<table> 
    <tr> 
     <td class='deletable'>hi</td> 
    </tr> 
</table> 

<ul> 
    <li> 
     <span class=deletable>hi</span> 
    </li> 
</ul> 

我想刪除的情況下,tdtr點擊和li情況span被點擊。

由於某種原因,這是行不通的,而是整個ul/table被刪除。

爲什麼這麼說?

回答

5

出於某種原因,這是行不通的,而是整個UL /表 刪除。

爲什麼這麼說?

在您當前的代碼this內點擊事件引用clicked元素。
然後,您遍歷元素的父元素,在其上調用。

內影響通話this現在指的是父(li/tr),但你打電話$(this).parent().remove();遍歷到父(ul/table)的母公司,因此刪除整個list/table

更改您的代碼僅使用$(this).remove();您的通話效果,而不是裏面,因爲它已經涉及到所需的父元素(li/tr),像這樣:

$(".deletable").live('click',function(){ 
     $(this).parent().effect('explode', 500, function(){ 
      $(this).remove(); 
     }) 
}); 
+0

工作:D,感謝解釋 – Zalaboza

+0

@MomenMElZalabany:不客氣。在嵌套調用中,「this」引用的內容有時會引起混淆。在大多數情況下,當使用jQuery時,它指的是您正在調用方法的對象。 – Nope

0

您也可以使用.parent的選擇器。 http://api.jquery.com/parent/

$(this).parent("tr").remove(); 

你如何理解整個表/ UL被刪除,如果你正在尋找它的調試工具,表/ UL只能有1個小孩元素瀏覽器可以刪除表/ UL以及,與他們沒有意義。

你可以嘗試這個時,表/ ul有多個孩子?

0

使用本

$(this).parents("li:first").remove(); 
4

嘗試

$(".deletable").live('click',function(){ 
    $(this).parent().effect('explode', 500, function(){ 
     // $(this) is still your parent 
     $(this).remove(); 
    }) 
}); 
+0

是的,這一個。我怎麼錯過了。 –

+0

大聲笑有道理!,非常感謝它工作 – Zalaboza

相關問題