我正在寻找一种好方法来标记/选择两个选定元素之间的所有元素。
想象一下
<parent>
<p>...</p>
<p>...</p>
<p>...</p>
<p>...</p>
</parent>
父级上有一个点击处理程序。用户现在可以在此列表中选择两个 p 元素,然后中间的所有 p 元素都应该被“激活”。
我正在考虑这样的系统:
- 第一次点击:标记/记住第一个元素 -> A
- 第二次点击:标记/记住第二个元素 -> B
- 判断A是否在B之前
- 执行 A.nextUntil(B)(除非 B 在 A 之前)
我不知道如何做3,期待暴力方法(在两个方向上迭代,看看它是否存在)
- dom 内部是否知道哪个元素出现在另一个元素之前?
- 还有更好的想法吗?
关于我的情况:父级可能包含数千个 p。
感谢您的帮助/想法!
雷托
最佳答案
要确定哪个元素最先出现,您可以简单地执行以下操作:
$(a).index() < $(b).index()
或者,一个稍微快一点的方法:
$(a).prevAll().length < $(b).prevAll().length
<小时/>
请注意,这两种方法只有在 a
时才能正常工作。和b
有相同的 parent 。
About my situation: parent could contain several thousand p's.
<p>
怎么样?添加了?也许您可以为他们每个人提供一个与其位置相对应的 ID(例如 p1
、 p2
...)——这肯定会让您不必使用上述方法来确定他们的位置。
关于javascript - 选择两个 p 元素之间的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3235667/