jQuery.closest();向下遍历DOM而不是向上遍历

4
下午好。
我在遍历DOM树时遇到了一些困难。我有以下标记:
http://pastie.org/999519

我试图从右下方的input.save遍历到div.node...这在一份标记副本中可以正常工作,但如果我复制它(显然更改最上层div.node的ID,并使用jQuery.closest('div.node')用于div.node中的上层元素,则会返回其下方的元素而不是上方的元素(即正确的元素)。我尝试使用parents(),但它也有其注意事项。是否可以将某种上下文附加到closest以使其向上而不是向下移动?或者有更好的方法来做到这一点。

提前致谢。

Alex

P.S 看起来stackoverflow对标记进行了奇怪的处理! - 我刚刚三重检查过它,它很好,但出于某种原因,它被拼接在下面。


我不理解;.closest() 只能沿 DOM 向上移动。 - Pointy
他的意思是“向上”,就是之前的意思-你需要修复那段代码,这样我们才能看到input.save在哪里:)尝试将其粘贴到记事本中,然后再粘贴到SO编辑器中,然后使用代码按钮使其成为代码。 - Dan Heberden
@Alex 你必须确保你的代码在这里粘贴时是用空格缩进而不是制表符。 - Pointy
抱歉,大家...我把它放在了 Pastie 上,因为它无法返回那里。http://pastie.org/999519 - Alex
请接受您认为最有帮助的答案。这样做是因为它为回答者提供了有价值的反馈。您可以通过点击旁边的复选标记来完成此操作,以标记您发现最有用的答案。 - Delan Azabani
显示剩余2条评论
1个回答

2
首先,您真的应该为.save元素使用一个id,除非您有更多的元素,如果是这样,尽可能使用节点前缀,因此是$('input.save')...
我不确定您的代码问题在哪里。你说它向下遍历,而你想让它向上?它应该向上。
来自jQuery文档http://api.jquery.com/closest/
获取与选择器匹配的第一个祖先元素,从当前元素开始并通过DOM树向上进行搜索。
也许在closest()之后立即使用find()会有一些问题。但是,我认为这不会是问题。

如果你阅读了jQuery的文档,它们中提到它是向下滚动而不是向上滚动(在评论中)...我以为它也会向上滚动,但实际上并不会!我知道可以添加input.save等等...这只是为了某个东西的概念验证。 - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接