简体   繁体   中英

How can I get the previous index?

I have a click, task to get the current and previous index of an item.

 $('.item').click(function() { var index = $('.item').index(this), indexLast = 'here prev index'; $('.result').text(index + ', ' + indexLast); });
 .wrap { display: flex; }.item { background-color: #2ecc71; width: 50px; height: 50px; margin: 0 10px; border-radius: 50%; cursor: pointer; }.item:nth-child(even) { background-color: #3498db; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="wrap"> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> </div> <div class="result"></div>

Example: we clicked on 3. And then on 6. I need to get. index == 6, lastIndex == 3.

You mean like this:

 var indexLast = ''; $('.item').click(function() { var index = $('.item').index($(this)); $('.result').text( 'current: ' + index + ', previous: ' + indexLast); indexLast = index });
 .wrap { display: flex;`enter code here` }.item { background-color: #2ecc71; width: 50px; height: 50px; margin: 0 10px; border-radius: 50%; cursor: pointer; }.item:nth-child(even) { background-color: #3498db; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="wrap"> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> </div> <div class="result"></div>

Please use this. Hope it will work for you.

var totalClickedArray = [];
$('.item').click(function() {
  var index = $('.item').index(this);
  totalClickedArray.push(index);
  var arraySize = totalClickedArray.length;
  console.log('last index:' + totalClickedArray[arraySize - 2],  ' new index:' + index);
});

 'use strict'; let indexLast = 'here prev index', current_i = 'here prev index' $('.item').click(function() { let index = $('.item').index(this), last_i = current_i; current_i = index; $('.result').text(current_i + ', ' + last_i); });
 .wrap { display: flex; }.item { background-color: #2ecc71; width: 50px; height: 50px; margin: 0 10px; border-radius: 50%; cursor: pointer; }.item:nth-child(even) { background-color: #3498db; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="wrap"> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> </div> <div class="result"></div>

As an alternative to storing in a variable, you can add a class to the one you click and then check for that class next time you click.

$(".wrap>.item").click(function() {
    var last = $(this).siblings(".active").removeClass("active");
    $(this).addClass("active");

   // output last.text() / $(this).text() as needed
});

Using OPs buttons and this.last index() as specified in the question:

 $('.item').click(function() { var indexLast = $(".item.clicked").index(); var index = $(this).index(); $(this).addClass("clicked").siblings().removeClass("clicked"); $('.result').text(index + ', ' + indexLast); });
 .wrap { display: flex; }.item { background-color: #2ecc71; width: 50px; height: 50px; margin: 0 10px; border-radius: 50%; cursor: pointer; }.item:nth-child(even) { background-color: #3498db; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="wrap"> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> </div> <div class="result"></div>

Extending this to show the active/lastactive using css gives:

 $(function() { $(".wrap>.item").click(function() { var last = $(this).siblings().removeClass("lastactive").filter(".active").removeClass("active").addClass("lastactive"); $(this).addClass("active"); }); });
 .item { border: 1px solid black; height: 20px; }.active { background-color: yellow; }.lastactive { background-color: #CCC; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="wrap"> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> </div> <div class="result"></div>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM