2009-11-11 79 views
0

我正在用javascript函數處理超鏈接的單擊事件。我正在使用jQuery的ajax方法來刪除記錄。然後我想刪除剛剛從頁面中刪除的元素。頁面結構看起來像這樣:jQuery parent.parent刪除

<ul> 
    <li> 
    <div id="div1"></div> 
    <div id="div2"> 
     <a id="DeleteItem">This is the hyperlink in question</a> 
    </div> 
    </li> 
</ul> 

我想要刪除的是li元素。我的假設是,我會使用以下方法來刪除它:

$("a#DeleteItem").parent.parent.remove(); 

然而,這將引發異常,指出parent.parent爲空或不是一個對象。我也嘗試了一個級別($「a#DeleteItem」)。parent.remove();),但後來我得到一個異常說明對象不支持這個屬性或方法。

我在做什麼錯?

回答

11

它不工作,因爲parent是一個函數:

$("a#DeleteItem").parent().parent().remove(); 

您也可以使用closest功能:

$("a#DeleteItem").closest('li').remove(); 
3

試試這個:

$("#DeleteItem").parents("li:first").remove(); 

您的主要問題是:呼叫是一種方法調用,不能像a一樣訪問領域。但爲了避免雙重打電話,您可以按照上述方式進行操作。

0

首先,你有一些基本的語法錯誤:使用「父()」而不是「父」

你想刪除的「禮」和它的所有兒童(包括被點擊的項目),還是隻是想刪除周圍的'li'標籤?

如果是第一種情況,那麼你需要做到以下幾點:。

<a id="DeleteItem" onclick="$(this).parent('div').parent('li').remove();">This is the hyperlink in question</a> 

格雷格,父()父()父()......將工作因爲jQuery的chainability的細。我在各種項目中使用過無數次。你的方法可能不適用於所有情況,因爲它只會定位無序列表中的第一個'li'標籤,其中可能有很多。

+0

實際上它應該只針對從錨點開始的直接父層級中的第一個li。選擇器在上下文中並且不要求UL的所有li元素。 – 2009-11-11 21:37:28