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

标签 javascript jquery dom jquery-selectors

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

想象一下

<parent>
  <p>...</p>
  <p>...</p>
  <p>...</p>
  <p>...</p>
</parent>

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

我正在考虑这样的系统:

  1. 第一次点击:标记/记住第一个元素 -> A
  2. 第二次点击:标记/记住第二个元素 -> B
  3. 判断A是否在B之前
  4. 执行 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(例如 p1p2 ...)——这肯定会让您不必使用上述方法来确定他们的位置。

关于javascript - 选择两个 p 元素之间的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3235667/

相关文章:

javascript - 如何从 Blob 或 BlobURL 获取 dataURL

javascript - 使用选项卡刷新父页面

javascript - Jquery ui slider 时间范围

javascript - 更改输入字段或文本区域中选定的文本

JavaScript - String.newProperty 与 String.prototype.newProperty?

javascript - 在 chart.js 图形上叠加线

php - 提交表单时没有任何反应

php - 使用 AJAX 动态地同时动态地创建多个动态表

javascript - 是否可以在常规对象(不是 DOM 对象)上分派(dispatch)事件?

javascript - 所以 DOM scrollIntoView 对齐顶部/底部,但是左/右呢?