我正在使用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();),但后来我得到一个异常,说明对象不支持这个属性或方法。
我做错了什么?
答案 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'标记,可能有很多。