javascript - 如何检查单击的元素是在当前事件元素之前还是之后

标签 javascript jquery css html

我有一个列表项,第一个已经有 .active 类。

当我点击其他列表项时,.active 类移动到那个被点击的元素。

但问题是,我无法检测我点击的元素是在前一个 .active 元素之前还是之后。

这是脚本

$(document).ready(function(){
  var $li = $("li");

  $li.each(function(){
    $(this).click(function(){
      $li.removeClass("active");
      $(this).addClass("active");
      
      if($("li.active").next($(this))){
      		$("span").text("after clicked element");
      } else {
      		$("span").text("before clicked element");
      }
    })
  })
})
li.active {
  background:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class="active">Check 1</li>
  <li>Check 2</li>
  <li>Check 3</li>
  <li>Check 4</li>
</ul>

<span></span>

这是 fiddle

最佳答案

为此,您可以检查 if 语句中相关元素的 index()。另请注意,each() 语句是多余的。试试这个:

$(document).ready(function() {
  $("li").click(function() {
    var activeIndex = $('li.active').removeClass('active').index();
    var thisIndex = $(this).addClass('active').index();

    if (activeIndex < thisIndex) {
      $("span").text("after active element");
    } else if (activeIndex > thisIndex) {
      $("span").text("before active element");
    } else {
      $('span').text('same element');
    }
  })
})
li.active {
  background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class="active">Check 1</li>
  <li>Check 2</li>
  <li>Check 3</li>
  <li>Check 4</li>
</ul>

<span></span>

关于javascript - 如何检查单击的元素是在当前事件元素之前还是之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43225983/

相关文章:

javascript - 选择单选按钮后使复选框可见

javascript - 如何在 div 可见时获取事件

javascript - 从 Jquery UI 模式对话框中隐藏闪烁的光标

html - Wordpress 导航样式

javascript - 当我更新 "@angular-devkit/build-angular"时样式加载器停止工作

javascript - jasmine-node 是否提供任何类型的 "fail fast"选项?

javascript - 切换侧边栏使用什么js函数

Javascript : Best way to declare functions to be used globally?

javascript - 如何缩小html容器中的图像

javascript - 如何在我的网站上模拟手机框架播放视频?