检测单击同一类或元素的不同索引

时间:2017-05-20 00:45:27

标签: javascript jquery html indexing

我有一个带有ul li的导航

<nav>
  <ul>
    <li id="zero"></li>
    <li id="one"></li>
    <li id="two"></li>
  </ul>
</nav>

对于javascript我有事件处理程序来检测我点击的索引。但是,如果当前点击li与前一个点击不同,我该如何编写if条件?

$('li').click(function(){
  var indexNum = $(this).index();
  if( prevIndexNum != currentIndexNum ){
  //do something 
  }
})

我想这更像是关于如何存储前一个变量值的问题?任何阅读都非常感谢。

3 个答案:

答案 0 :(得分:0)

您只需要保存最后一次点击。

var prevIndexNum;

$('li').click(function() {
  var indexNum = $(this).index();
  if (prevIndexNum !== indexNum) {
    console.log('different');
    prevIndexNum = indexNum;
  } else {
    console.log('same');
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li id="zero">zero</li>
  <li id="one">one</li>
  <li id="two">two</li>
</ul>

答案 1 :(得分:0)

添加

var prev
    if(indexNum != prev)
          prev = $(this).index()

之前。

正如另一个人提到的那样,你真正需要做的就是保存上一次运行代码的价值。

答案 2 :(得分:0)

你需要将当前索引存储在局部变量中,如果编码为真且不相等,则将当前索引移动到我们称之为prevIndexNum的全局变量。我希望它能帮到你很多。

var prevIndexNum;
$('li').click(function(){
  var currentIndexNum = $(this).index();
  if( prevIndexNum != currentIndexNum ){
     //do something if the value are not the same.
  } else {
     // do something if the value are the same.
  }
})