Javascript-如何突出显示上次单击的列表项

Javascript-如何突出显示上次单击的列表项,javascript,html,css,list,twitter-bootstrap,Javascript,Html,Css,List,Twitter Bootstrap,我在一个引导页面上有一个HTML项目的侧栏列表,我希望最后一个单击的项目用一个活动类突出显示。我想知道如何像数组一样获得整个列表,以便突出显示某个项目li或突出显示最后单击的项目 列表的结构如下所示: <div class="container-fluid"> <div class="row"> <div class="col-sm-3 col-md-2 sidebar sidebar-style"> <ul class="nav

我在一个引导页面上有一个HTML项目的侧栏列表,我希望最后一个单击的项目用一个活动类突出显示。我想知道如何像数组一样获得整个列表,以便突出显示某个项目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>
$(".nav-sidebar li").click(...);

我需要的是一些JS代码,它可以将上次单击的li项设置为class=active,但仍然可以选择将任何li项设置为active项,例如,如果我想有一个随机按钮,它选择了第4项,然后选择了第2项等等。我想我需要的主要是一种让所有列表项都像一个数组一样的方法。

我强烈建议您使用jQuery,这是一种模拟DOM操作的方法,就像一个数组,或者更准确地说是一个对象

我的建议如下:

$(".nav-sidebar").on('click', 'li', function(e) {
    $(this).parent().find('li.active').removeClass('active');
    $(this).addClass('active');
});
$("li:eq(3)").trigger('click');
此代码正在从所有li项目中删除活动类,并将活动类添加到当前单击的li项目中

干杯

编辑PS:

您还可以像这样直接绑定事件:

<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>
$(".nav-sidebar li").click(...);
但是使用.on的目的是动态绑定事件,因此如果您决定向$.nav侧栏元素添加新的li,它也将触发该元素上的事件

编辑:

要回答@zeddex您的问题:如何手动选择li 4? 您只需使用以下命令:

$(".nav-sidebar").on('click', 'li', function(e) {
    $(this).parent().find('li.active').removeClass('active');
    $(this).addClass('active');
});
$("li:eq(3)").trigger('click');

这将手动触发LI4的单击事件。如果要选择特定的li,可以使用like::eqx的方法,其中x是要到达的li项的位置,从0开始,对应于第一个li。看看jQuery文档:

您的javascript在哪里?朱姆是做什么的?StackOverflow是一个您询问代码面临的特定问题的地方,我们会尽力帮助您,而不是一个您要求代码并由他人编写代码的地方。感谢您突出显示上次单击的项目。我如何手动选择li 4等?瞧!相应地更新了我的答案:加油!