jQuery parent.parent删除

时间:2009-11-11 21:23:14

标签: jquery

我正在使用javascript函数处理超链接的click事件。我使用jQuery的ajax方法删除记录。然后我想删除刚刚从页面中删除的元素。页面结构如下所示:

<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为null或不是对象。我也尝试了一个级别($“#DeleteItem”)。parent.remove();),但后来我得到一个异常,说明对象不支持这个属性或方法。

我做错了什么?

3 个答案:

答案 0 :(得分:11)

它不起作用,因为parent是一个函数:

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

您还可以使用closest功能:

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

答案 1 :(得分:3)

试试这个:

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

您的主要问题是parent调用是方法调用,无法像字段一样进行访问。但是为了避免双重呼叫你可以做上面描述的事情。

答案 2 :(得分:0)

首先,您有一些基本的语法错误:使用'parent()'而不是'parent'

您要删除'li'及其所有子项(包括点击的项目),还是只想删除周围的'li'标记?

如果是第一种情况,那么您需要执行以下操作:

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

Greg,parent()。parent()。parent()...因为jQuery的可链接性而能正常工作。我在各种项目中多次使用过它。

Quintin,你的方法可能不适用于所有情况,因为它只会针对无序列表中的第一个'li'标记,可能有很多。