如何选择两个dom之间的所有兄弟元素

发布于 2022-09-05 07:23:34 字数 578 浏览 14 评论 0

现在有两个dom,上面有data属性,我想选择这两个dom元素之间的所有的dom,请问有没有办法实现?

例如

<p data-collapse-begin="1">大家好,本编又来给大家推荐新奇酷但是又不贵的小玩意了。</p>
<p>末了,还是一如既往地说下本编的想法</p>
<p>出何日党务</p>
<h2 data-collapse-end="1">操作演示</h2>
<p>天王盖地虎</p>
<p>宝塔震河妖</p>

想要的效果:[data-collapse-begin=1][data-collapse-end=1] 选择器之间的所有兄弟节点都设置为color:red

注意:data属性可以任意起名,或者用class也可以,这不是重点,重点是想实现两个dom之间的所有DOM用CSS选择器实现相应的样式

非常感谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

情绪失控 2022-09-12 07:23:34
//jQuery 
nextUntil();

DEMO

浮光之海 2022-09-12 07:23:34

CSS

[data-collapse-begin="1"],
[data-collapse-begin="1"] ~ * {
  color: red;
}

[data-collapse-end="1"] ~ * {
  color: inherit;
}

原生 JS

document.querySelectorAll('[data-collapse-begin="1"]').forEach(begin => {
  for(let el = begin; el; el = el.nextElementSibling) {
    el.style.color = 'red'
    if (el.dataset.collapseEnd === '1') {
      break
    }
  }
})
明媚殇 2022-09-12 07:23:34

var $ele = $("p[data-collapse-begin='1']").nextAll();
$("p[data-collapse-end='1']", $ele).prevAll();

我只会用jQuery选择器。

水染的天色ゝ 2022-09-12 07:23:34

原生大概是这样写吧(写的比较烂,大家轻拍~):

var begin = document.querySelector('[data-collapse-begin]');
var next = begin.nextElementSibling;
var i = next.matches('[data-collapse-end]');
while(!i) {
    next.style.setProperty('color', 'red');
    next = next.nextElementSibling;
    i = next.matches('[data-collapse-end]');
}
南街九尾狐 2022-09-12 07:23:34

非常感谢,真是太厉害了!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文