我有一堆class =“change”,每个都有一个唯一的id。我使用以下方法创建了一系列跨度:
var changesArray = $('.change').toArray()
我希望能够在单击它时获取数组中的span的索引。我试过了:
$('.change').click(function(){
var thisChange = $(this).attr('id');
var thisChangeIndex = $.inArray(thisChange,changesArray);
});
但我得到的每一个都是-1。我点击了.change。
我是这类代码的新手。帮助
答案 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();