Javascript 使用锚定标记单击更改ul列表的活动类别

Javascript 使用锚定标记单击更改ul列表的活动类别,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我试图通过单击列表元素中的链接来添加或删除列表元素的活动类 <ul> <li id="l1" class=""><a href="javascript:;" class="btn1"> one</a></li> <li id="l2" class=""><a href="javascript:;" class="btn2">two</a></li>

我试图通过单击列表元素中的链接来添加或删除列表元素的活动类

<ul>
   <li id="l1" class=""><a href="javascript:;" class="btn1"> one</a></li>
   <li id="l2" class=""><a href="javascript:;" class="btn2">two</a></li>                                                   
</ul>

 $('.btn1').click(function() {     
    $( "#l1" ).addClass( "active" );   
    $( "#l2" ).removeClass( "active" );        
    window.open ('/one');

});

$('.btn2').click(function() {       
    $( "#l2" ).addClass( "active" );
    $( "#l1" ).removeClass( "active" );     
    window.open ('/two');

});
$('.btn1')。单击(函数(){ $(“#l1”).addClass(“活动”); $(“#l2”).removeClass(“活动”); window.open('/one'); }); $('.btn2')。单击(函数(){ $(“#l2”).addClass(“活动”); $(“#l1”).removeClass(“活动”); window.open('/two'); });
我的html和css类如上所述。但它并没有像预期的那样起作用。有人知道如何解决吗?

试试:

$(".btn1").click(function(){
$("ul li").removeClass('active'); 
$("#l1").toggleClass('active');
window.open ('/one');
});
附注第2行 //将从所有列表中的所有项目符号中删除活动类。向选择器添加一个#id以指定特定列表。

尝试:

$(".btn1").click(function(){
$("ul li").removeClass('active'); 
$("#l1").toggleClass('active');
window.open ('/one');
});
附注第2行 //将从所有列表中的所有项目符号中删除活动类。向选择器添加一个id以指定特定列表。

$('.btn')。单击(函数(){
$('.btn')。最近('li')。removeClass(“活动”)
$(this).最近('li').addClass(“活动”)
console.log($(this.data(“url”))
})
li.active{color:red}

$('.btn')。单击(函数(){
$('.btn')。最近('li')。removeClass(“活动”)
$(this).最近('li').addClass(“活动”)
console.log($(this.data(“url”))
})
li.active{color:red}

//所有按钮/链接的一键式处理程序。
$('.btn')。单击(函数(事件){
//从所有按钮中删除类。
$('.btn').parent().removeClass('active');
//获取单击的特定按钮。
var btn=$(本);
//将活动类添加到其父类。
btn.parent().addClass('active');
//从链接上的“数据链接”属性打开。
//不过,window.open可能会被浏览器弹出窗口阻止程序阻止。
window.open(btn.attr('data-link'));
});
.active{
背景色:#ff0000;
}
a、 btn{
显示:块;
}

//所有按钮/链接的一键式处理程序。
$('.btn')。单击(函数(事件){
//从所有按钮中删除类。
$('.btn').parent().removeClass('active');
//获取单击的特定按钮。
var btn=$(本);
//将活动类添加到其父类。
btn.parent().addClass('active');
//从链接上的“数据链接”属性打开。
//不过,window.open可能会被浏览器弹出窗口阻止程序阻止。
window.open(btn.attr('data-link'));
});
.active{
背景色:#ff0000;
}
a、 btn{
显示:块;
}

我的HTML和CSS类如上所述

基本上,您的代码运行良好。您需要添加CSS,如
.active{color:red;}

但是,聆听事件
单击每个按钮并不是一件好事。假设你有大约10/100/1000个按钮,然后你必须像这样复制/Pase代码

你应该记住:

因此,我为您重构了如下代码。干杯

$('.btn')。单击(函数(){
$('.btn')。最近('li')。removeClass(“活动”);
$(this).最近('li').addClass(“活动”);
var content=$(this.data('value');
$(“#content”).html(content);
});
.active{
颜色:红色;
}

我的HTML和CSS类如上所述

基本上,您的代码运行良好。您需要添加CSS,如
.active{color:red;}

但是,聆听事件
单击每个按钮并不是一件好事。假设你有大约10/100/1000个按钮,然后你必须像这样复制/Pase代码

你应该记住:

因此,我为您重构了如下代码。干杯

$('.btn')。单击(函数(){
$('.btn')。最近('li')。removeClass(“活动”);
$(this).最近('li').addClass(“活动”);
var content=$(this.data('value');
$(“#content”).html(content);
});
.active{
颜色:红色;
}


这很有用。但是我需要导航到它,而不是打印url。如果我们这样做,那么页面就会被刷新并丢失活动类。这很有用。但是我需要导航到它,而不是打印url。如果我们这样做,那么页面就会被刷新并丢失活动类窗口。open()使用不同的url参数,一旦页面被刷新,活动类就会被删除。那我该怎么防止呢?我刚刚更新了我的答案。基本上,您应该获取内容,然后将其分配给下面的
div content
,而不是导航。如果仍要导航,则应使用window.open()存储数据,并使用不同的url参数,一旦页面刷新,actives类将被删除。那我该怎么防止呢?我刚刚更新了我的答案。基本上,您应该获取内容,然后将其分配给下面的
div content
,而不是导航。如果仍要导航,则应使用window来存储数据。open()应在单击时使用不同的参数。此处的选项很简单,请尝试使用window.open(查看下面的主要答案,了解为您解决此问题的技巧,但不推荐),但如果内容是本地的,则可以使用Ajax;如果内容不是本地的,则可以使用cURL。window.open()应该采取不同的措施