Jquery 获取附加元素的父级
我已使用Jquery 获取附加元素的父级,jquery,Jquery,我已使用appendTo()将元素插入到DOM中。我试图从附加的元素内部遍历DOM,以获得对附加元素的元素的引用。但这似乎对我不起作用。通过将parent()的结果输出到控制台,我完成了一些故障排除。每次后退一级,我都会从parent()得到一个结果,直到到达附加元素的父级。此时parent()返回一个空集 下面是说明此问题的代码示例: <div class="menu"> <span class="like current"></span>
appendTo()
将元素插入到DOM中。我试图从附加的元素内部遍历DOM,以获得对附加元素的元素的引用。但这似乎对我不起作用。通过将parent()
的结果输出到控制台,我完成了一些故障排除。每次后退一级,我都会从parent()
得到一个结果,直到到达附加元素的父级。此时parent()
返回一个空集
下面是说明此问题的代码示例:
<div class="menu">
<span class="like current"></span>
<span class="done"></span>
<span class="add"></span>
<span class="report"></span>
<div class="panel">
<div class="panel-content">
<p>This function is not yet implemented</p>
<p>
<a class="cancel" onclick="cancel_panel(this)">Cancel</a>
</p>
</div>
</div>
</div>
(其中elem是对取消链接的a
元素的引用)
但它不起作用$(elem).closest(“div.menu”)
返回一个空集,而不是div.menu
在进一步的故障排除中,$(elem).parent()
提供了对p
标记的预期引用,$(elem).parent().parent().parent()
提供了对div.panel
的预期引用。但是$(elem).parent().parent().parent().parent().parent()
返回一个空集
这是怎么回事?在遍历DOM时,附加元素的响应方式是否与实际元素的响应方式不同?jquery是否会使带有嵌套附件的绘图松动?如何获取返回
div.menu
?尝试查找您的“like current”类并在该元素处重命名为“like”我尝试重现您的脚本问题:
$(function() {
var elem = $('<a class="cancel">Cancel</a>')
.click(cancel_panel)
.appendTo($(".panel-content").children().last());
function cancel_panel() {
$(elem).closest("div.menu")
.children("span.current")
.removeClass("current");
}
});
一定要看一看&检查问题是否出在其他地方
$(elem).parents().filter(".menu").children("span.current").removeClass("current");
我做了一个测试,看起来效果很好。问题解决了。附加元素的jquerydom遍历工作得很好。hungerpain的JSFIDLE演示证明了我在问题中包含的部分代码没有问题。那是另外一回事。重新检查我的代码后,我发现在我试图遍历DOM之前,我已经从DOM中删除了
div.panel
,所以难怪它不起作用 跨度通常不是自动闭合的。你的doctype是什么?在真实的代码中它们不是-这里的代码只是被截断/简化了,因为问题似乎在这里起作用。。。我所做的更改是,我取出了onclick
,并将其制作成一个click
事件jQuery@hungerpain:你说得对,它确实管用。在重新命名代码后,我发现了问题-我在删除当前类之前而不是之后从DOM中删除了面板。对不起,这不是我问题的答案
$(elem).closest("div.menu").children("span.current").removeClass("current");
$(elem).parents().filter(".menu").children("span.current").removeClass("current");