Jquery选择两个特殊元素之间的元素

时间:2016-01-18 13:02:04

标签: javascript jquery

如何在第一个和第二个<dd>

之间存在所有<dt>个元素

身份不是静态的,只有<dl id="allData">是静态的!

<div>
   <dl id="allData">
      <dt id="f">Data :</dt>
      <dd id="sd">A</dd>
      <dd id="bf">B</dd>
      <dd id="r3">C</dd>
      <dd id="br">D</dd>
       .
       .
      <dd id="u6">L</dd>

      <dt id="f1">Data1</dt>
      <dd id="dw">A</dd>
      <dd id="jy">B</dd>
      <dd id="5d">C</dd>
      <dd id="gg">D</dd>
       .
       .
      <dd id="2s">K</dd>
   </dl>
</div>

如果我有一个<dd>元素,我如何获得<dl id='allData'>的所有<dt>元素?

3 个答案:

答案 0 :(得分:1)

您可以使用元素索引:

var i1 = $(document.getElementById(id1)).index(),
    i2 = $(document.getElementById(id2)).index(),
    $elements = $('#allData dd').filter(function(){
      var i = $(this).index(); return i1<i && i<i2
    });

&#13;
&#13;
var i1 = $('#f').index(),
    i2 = $('#f1').index(),
    $elements = $('#allData dd').filter(function(){
      var i = $(this).index(); return i1<i && i<i2
    });

// print the result on the snippet
document.body.innerHTML = JSON.stringify($elements.map(function(){ return this.id }).get());
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
   <dl id="allData">
      <dt id="f">Data :</dt>
      <dd id="sd">A</dd>
      <dd id="bf">B</dd>
      <dd id="r3">C</dd>
      <dd id="br">D</dd>
       .
       .
      <dd id="u6">L</dd>

      <dt id="f1">Data1</dt>
      <dd id="dw">A</dd>
      <dd id="jy">B</dd>
      <dd id="5d">C</dd>
      <dd id="gg">D</dd>
       .
       .
      <dd id="2s">K</dd>
   </dl>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以尝试

var $selected_siblings= $('#f').nextUntil('#f1');

//根据您的新要求尝试此

$("#allData").children("dt").slice(0,1) .watever_method_您想尝试

答案 2 :(得分:0)

非常感谢@ denys-séguret和@ nomeaning25

结果:

var i1 = $($("#allData dt")[0]).index(),
    i2 = $($("#allData dt")[1]).index(),
    $elements = $('#allData dd').filter(function () {
        var i = $(this).index();
        return i1 < i && i < i2
    });

console.log(JSON.stringify($elements.map(function () {
    return this.id
}).get()));

并感谢@ yo-yo

<强>结果:

console.log($("#allData").children("dt").slice(0, 1));