Javascript - 如何突出显示上次单击的列表项
Javascript - How to highlight the last clicked list item
我在引导页面上有一个 HTML 项目的侧边栏列表,我希望最后点击的项目用"活动"类突出显示。我想知道如何像数组一样获取整个列表 (ul),以便我可以突出显示某个项目 (li) 或突出显示上次单击的项目。
该列表的结构如下:
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-md-2 sidebar sidebar-style">
<ul class="nav nav-sidebar sidebar-scrollable">
<li class="active"><a href="#" onclick="jump(0)">Home</a></li>
<li><a href="#" onclick="jump(1)">Site 001</a></li>
<li><a href="#" onclick="jump(2)">Site 002</a></li>
<li><a href="#" onclick="jump(3)">Site 003</a></li>
<li><a href="#" onclick="jump(4)">Site 004</a></li>
<li><a href="#" onclick="jump(5)">Site 005</a></li>
我需要的是一些JS代码,它可以将上次单击的li项目设置为class="active",但仍然可以选择将任何li项目设置为活动项目,例如,如果我想有一个随机按钮并且它选择了项目4然后2等。我想我需要的主要事情是一种将所有列表项都像数组一样的方法。
我强烈建议您使用jQuery,它模拟DOM操作,就像数组或更准确地说是对象一样。
我的建议如下:
$(".nav-sidebar").on('click', 'li', function(e) {
$(this).parent().find('li.active').removeClass('active');
$(this).addClass('active');
});
此代码从所有li
项中删除活动类,并将活动类添加到当前单击的li
项。
干杯
编辑附注:
您也可以像这样直接绑定事件:
$(".nav-sidebar li").click(...);
但是使用 .on()
的目的是它将动态绑定事件,因此,如果您决定向 $(".nav-sidebar")
元素添加新的 li,它也将在该元素上触发事件。
编辑:
要回答@zeddex您的问题:如何手动选择li 4?您只需使用以下方法:
$("li:eq(3)").trigger('click');
这将手动触发 li 4 的单击事件。如果要选择特定的 li,可以使用类似的方法::eq(x)
其中x
是您要从 0
开始到达的 li 项目的位置,对应于您的第一个li
。看看jQuery DOC on :jQuery DOC on :eq()
相关文章:
- 单击列表中的引导输入按钮将禁用其他按钮
- 单击列表项时取消下拉列表
- 单击列表框中的元素时获取该元素的id
- 单击列表项更改图像
- 注册单击列表项子元素
- 从数据库创建可单击列表,并在网页元素中返回相关的数据库字段数据
- J查询如何在单击列表项时选中单选按钮
- PHP Yii-单击列表然后显示模式中单击的列表的完整数据
- 如何在jQuery Mobile中单击列表项时调用函数
- 在 Java 脚本中更改颜色单击列表器
- 在单击列表中更改 img src
- 单击列表成员时显示子项
- 如何在单击列表项时更改段落文本
- 选择收音机的可单击列表项
- Jquery:检查是否已单击列表中的所有链接
- 删除粗体标记<b></b>在项目上单击列表javascript
- 单击列表中的项目->查看详细信息但没有输出?Firebase.child失败:第一个参数是无效路径
- 如何单击列表中的项目并在新页面中查看该项目?AngularJS和Ionic
- 单击列表按钮时,从列表中获取内部HTML
- 如何在单击列表中的一个li时加载外部小部件