【发布时间】:2014-07-19 04:12:29
【问题描述】:
我有一个包含一些表单的页面。在提交时,我想匹配第一次出现的元素(即段落)向后搜索表单。例如
- 在
#firstform提交我想匹配#secondparagraph - 在
#secondform提交我想匹配#thirdparagraph
<div>
<p id="firstparagraph">Some other paragraph</p>
<ul>
<li>First element</li>
<li>Second element</li>
</ul>
<p id="secondparagraph">Some other paragraph</p>
</div>
<form id="firstform">
<input type="submit" value="Submit1" />
</form>
<p id="thirdparagraph">Some other paragraph</p>
<form id="secondform">
<input type="submit" value="Submit2" />
</form>
是否可以创建一个向后搜索并在第一次匹配时停止的 jQuery 函数?
【问题讨论】:
-
这不是一个容易解决的问题,因为您需要递归地查看表单的兄弟元素以查找所需的
p标记。您能否发布您尝试编写的代码来解决此问题。 -
<div>必须存在吗?它使代码变得更加困难。如果<div>不存在,它就像$('form').on('submit', function () { var paragraph = $(this).prevAll('p').first(); });一样简单 -
它很大程度上取决于HTML结构,一般情况下我认为代码并不简单。
-
@RoryMcCrossan:实际上我对可能的代码一无所知。我发现了一些 jQuery 函数,例如 prevAll 或 reverse,但它们中的每一个似乎都只搜索兄弟姐妹。我完全意识到这不是一个微不足道的问题,因为我想独立于 HTML 结构找到第一次出现。我知道这是一个非常普遍的问题,因此非常困难。
-
这个的用例是什么?为什么你的结构如此随机?
标签: jquery dom jquery-selectors