在JS / JQuery中查找由toArray创建的数组中元素的索引

时间:2016-06-29 13:21:44

标签: javascript jquery arrays

我有一堆class =“change”,每个都有一个唯一的id。我使用以下方法创建了一系列跨度:

var changesArray = $('.change').toArray()

我希望能够在单击它时获取数组中的span的索引。我试过了:

$('.change').click(function(){
   var thisChange = $(this).attr('id');
   var thisChangeIndex = $.inArray(thisChange,changesArray);
});

但我得到的每一个都是-1。我点击了.change。

我是这类代码的新手。帮助

4 个答案:

答案 0 :(得分:4)

toArray方法说

  

以数组的形式检索jQuery集中包含的所有元素。

您正在寻找数组中的特定id - 这将永远不会有效。

如果您想要项目的索引,可以使用.index()

 $('.change').click(function(){
   var thisChangeIndex = $('.change').index(this);
   console.log(thisChangeIndex);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <span class="change">change1</span>
  <span class="change">change2</span>
  <span class="change">change3</span>
  <span class="change">change4</span>
 </div>
<div>
  <span class="change">change5</span>
  <span class="change">change6</span>
  <span class="change">change7</span>
  <span class="change">change8</span>
 </div>

答案 1 :(得分:0)

您应该只保留一个唯一ID的简单数组:

let formatter = NSNumberFormatter()
formatter.numberStyle = .PercentStyle
formatter.maximumFractionDigits = 1
formatter.multiplier = 1.0
pieChartData.dataSet?.valueFormatter = formatter

然后这行应该可以正常工作:

var changesArrayIds = $('.change').toArray().map(function(x) { return x.id; });

答案 2 :(得分:0)

如果您坚持使用.toArray

var changesArray = $('.change').toArray(); $('.change').click(function(){ var thisChange = $(this).attr('id'); var thisChangeIndex = -1; $.each( changesArray, function( i, val ) { if( thisChange==val.id) thisChangeIndex= i; }); console.log(thisChangeIndex); });
LEFT JOIN

答案 3 :(得分:-1)

当您调用toArray时,您将获得所有DOM节点的数组,而不是jquery对象。您可以搜索this而不是$(this)

var changesArray = $('.change').click(function(){
   var thisChangeIndex = $.inArray(this,changesArray);
}).toArray();