通过CSS选择器选择两个已知元素之间的所有元素 [英] Select all elements between two known elements by CSS selector

查看:120
本文介绍了通过CSS选择器选择两个已知元素之间的所有元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个元素,定义的id在它们之间有任何html,例如:

 < div id ='d1 '> Hello< / div> 

<! - 这里有任何html代码 - >
< div>示例< / div>< hr />< a href =>示例< / a>

< div id ='d2'>世界< / div>是否有CSS选择器选择#d1和#d2之间的所有元素?


b $ b

解决方案

回答:不。



但你总是可以选择JQuery: p>

  $('#id')。nextUntil('#id2')
请记住, .nextUntil 方法选择之间的所有元素,独占。 em>要选择包含两个元素的元素,请使用:

  $('#id')。nextUntil id2')。andSelf()。add('#id2')

  <!DOCTYPE html>< html>< head>< style> .siblings * {display:block; border:2px solid lightgrey;颜色:lightgrey; padding:5px; margin:15px;}< / style>< script src =https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js>< / script>< ; script> $(document).ready(function(){$(li.start)。nextUntil(li.stop)。css({color:red,border:红色}); $(li.start1)。nextUntil(li.stop1)andSelf()。add(li.stop1)。css({color:red :2px solid red});});< / script>< / head>< body& < p>只需选择之间的所有元素,即可。< / p> < div style =width:500px; class =siblings> < ul> ul(parent)< li> li(sibling)< / li> < li> li(兄弟姐妹)< / li> < li class =start> li(同级别名称为start)< / li> < li> li(类别名称为start的li的下一个同级)< / li> < li> li(类别名称为start的li的下一个同级)< / li> < li> li(类别名称为start的li的下一个同级)< / li> < li class =stop> li(类别名称为stop的兄弟姐妹)< / li> < / ul> < / div> < p>只需选择两者之间的所有元素即可。< / p> < div style =width:500px; class =siblings> < ul> ul(parent)< li> li(sibling)< / li> < li> li(兄弟姐妹)< / li> < li class =start1> li(同级别名称为start)< / li> < li> li(类别名称为start的li的下一个同级)< / li> < li> li(类别名称为start的li的下一个同级)< / li> < li> li(类别名称为start的li的下一个同级)< / li> < li class =stop2> li(类别名称为stop的兄弟姐妹)< / li> < / ul> < / div>< / body>< / html>  



在我看来,这是最简单的选择。


I have two elements with defined ids having any html between them, for example:

<div id='d1'>Hello</div>

<!-- Here come any html code -->
<div>Example</div><hr/><a href="">Example</a>

<div id='d2'>World</div>

Is there CSS selector that selects all the elements between #d1 and #d2?

解决方案

Answer: No.

But you always have the option of JQuery:

$('#id').nextUntil('#id2')

Keep in mind, the .nextUntil method selects all elements in between, exclusive. To select the elements including the two elements, use this:

$('#id').nextUntil('#id2').andSelf().add('#id2')

<!DOCTYPE html>
<html>
<head>
<style>
.siblings * { 
    display: block;
    border: 2px solid lightgrey;
    color: lightgrey;
    padding: 5px;
    margin: 15px;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("li.start").nextUntil("li.stop").css({"color": "red", "border": "2px solid red"});
  
    $("li.start1").nextUntil("li.stop1").andSelf().add("li.stop1").css({"color": "red", "border": "2px solid red"});
});
</script>
</head>
<body>

    <p>Just selecting all elements in between, exclusive.</p>
  
<div style="width:500px;" class="siblings">
  <ul>ul (parent)  
    <li>li (sibling)</li>
    <li>li (sibling)</li>
    <li class="start">li (sibling with class name "start")</li>
    <li>li (the next sibling of li with class name "start")</li>
    <li>li (the next sibling of li with class name "start")</li>
    <li>li (the next sibling of li with class name "start")</li>
    <li class="stop">li (sibling with class name "stop")</li>
  </ul>   
</div>
  
  <p>Just selecting all elements in between, inclusive.</p>
  
<div style="width:500px;" class="siblings">
  <ul>ul (parent)  
    <li>li (sibling)</li>
    <li>li (sibling)</li>
    <li class="start1">li (sibling with class name "start")</li>
    <li>li (the next sibling of li with class name "start")</li>
    <li>li (the next sibling of li with class name "start")</li>
    <li>li (the next sibling of li with class name "start")</li>
    <li class="stop2">li (sibling with class name "stop")</li>
  </ul>   
</div>

</body>
</html>

In my opinion, that's the easiest option.

这篇关于通过CSS选择器选择两个已知元素之间的所有元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆