如何按顺序检索特定DOM元素的所有index()值

时间:2016-02-26 10:08:40

标签: javascript jquery html css

我想从父节点后代层次结构中获取类名div.one的index()值。这里div#mydiv是我的父母后裔。 我的预期结果应该是在控制台中:0,1,2,3,4,5。

JS:

$('#mydiv .one').each(function () {
    console.log($(this).index()); // Here Result is 0,1,2,0,1,2 ,but I want 0,1,2,3,4,5
});

HTML:

<div id="mydiv">
     <div class="div-demo">
        <div class="one" >
           Demo 1
        </div>
        <div class="one" >
           Demo 2
        </div>
        <div class="one" >
          Demo 3
        </div>
    </div>

     <div class="div-demo">
       <div class="one" >
           Demo 4
        </div>
        <div class="one" >
           Demo 5
        </div>
        <div class="one" >
          Demo 6
        </div>
    </div>
</div>

小提琴链接:https://jsfiddle.net/gzdh87y2/

提前感谢。

4 个答案:

答案 0 :(得分:4)

index()的变体将根据其兄弟姐妹返回元素的索引。

您可以缓存one并使用它来获取元素集中元素的索引

var $ones = $('#mydiv .one');
$ones.each(function() {
  console.log($ones.index(this)); // Here Result is 0,1,2,0,1,2 ,but I want 0,1,2,3,4,5
});

或使用each()回调

的索引参数

&#13;
&#13;
$('#mydiv .one').each(function(idx) {
  snippet.log(idx); // Here Result is 0,1,2,0,1,2 ,but I want 0,1,2,3,4,5
});
&#13;
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mydiv">
  <div class="div-demo">
    <div class="one">
      Demo 1
    </div>
    <div class="one">
      Demo 2
    </div>
    <div class="one">
      Demo 3
    </div>
  </div>

  <div class="div-demo">
    <div class="one">
      Demo 4
    </div>
    <div class="one">
      Demo 5
    </div>
    <div class="one">
      Demo 6
    </div>
  </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:3)

您需要为index()提供一个选择器,以限制其搜索的元素。试试这个:

$('#mydiv .one').each(function () {
    console.log($(this).index('.one'));
});

Working example

答案 2 :(得分:2)

尝试通过传递.index()对象来调用元素集合上的this

var cache = $('#mydiv .one');
cache.each(function () {
    console.log(cache.index(this));
});

DEMO

答案 3 :(得分:0)

使用eq()函数并替换index()。 例如:

$('#mydiv .one').each(function () {console.log($(this).eq());});