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()应该采取不同的措施