选择两个p元素之间的所有元素

ret*_*eto 0 javascript jquery dom jquery-selectors

我正在寻找一种很好的方法来标记/选择两个选定元素之间的所有元素.

想像

<parent>
  <p>...</p>
  <p>...</p>
  <p>...</p>
  <p>...</p>
</parent>
Run Code Online (Sandbox Code Playgroud)

父级上有一个点击处理程序.用户现在可以在此列表中选择两个p元素,然后中间的所有p元素都应该被"激活".

我正在考虑一个类似的系统:

  1. 首先点击:标记/记住第一个元素 - > A.
  2. 第二次点击:标记/记住第二个元素 - > B.
  3. 确定A是否在B之前
  4. 做A.nextUntil(B)(除非B在A之前)

我不知道如何做3,期待蛮力方法(在两个方向迭代,看看它是否存在)

  • dom是否在内部知道哪个元素出现在另一个元素之前?
  • 有没有更好的想法?

关于我的情况:父母可能包含几千个p.

感谢您的帮助/想法!

雷托

Jam*_*mes 5

要确定哪个元素首先出现,您可以简单地执行:

$(a).index() < $(b).index()
Run Code Online (Sandbox Code Playgroud)

或者,稍微快一点的方法:

$(a).prevAll().length < $(b).prevAll().length
Run Code Online (Sandbox Code Playgroud)

请注意,这两种方法将只有正常工作a,并b具有相同的父.


关于我的情况:父母可能包含几千个p.

如何<p>添加?也许你可以给他们每个对应于其位置的ID(例如p1,p2...) -这肯定会从具有确定使用上述方法的立场拯救你.