我正在尝试在每次单击时删除并为列表项设置活动类。它当前正在删除所选的活动类,但未设置它。知道我错过了什么吗?
HTML
<ul class="nav nav-list">
<li class='nav-header'>Test</li>
<li class="active"><a href="page1.php">Page 1</a></li>
<li><a href="page2.php">Page 2</a></li>
<li><a href="page3.php">Page 3</li>
</ul>
jquery的:
$('.nav-list').click(function() {
//console.log("Clicked");
$('.nav-list li.active').removeClass('active');
$(this).addClass('active');
});
答案 0 :(得分:34)
this
将指向由<ul>
选择的.nav-list
。你可以改用委托!
$('.nav-list').on('click', 'li', function() {
$('.nav-list li.active').removeClass('active');
$(this).addClass('active');
});
答案 1 :(得分:14)
你可以使用兄弟姐妹和 removeClass 方法
$('.nav-link li').click(function() {
$(this).addClass('active').siblings().removeClass('active');
});
答案 2 :(得分:5)
试试这个,
$('.nav-list li').click(function() {
$('.nav-list li.active').removeClass('active');
$(this).addClass('active');
});
在您的上下文中,$(this)
将指向UL
元素,而不是Li
。因此,你没有得到预期的结果。
答案 3 :(得分:1)
我用过这个:
$('.nav-list li.active').removeClass('active');
$(this).parent().addClass('active');
由于活动类位于<li>
元素中,而点击的内容是<a>
元素,因此第一行会从所有.active
和第二行中删除<li>
(再次,$(this)
代表<a>
,这是点击的元素)将.active
添加到直接父级,即<li>
。
答案 4 :(得分:0)
就我而言,我有相同类的 div 元素。现在我使用 jquery 在它上面添加了活动类检查代码。
div 元素
<div class="previewBox" id="first_div">
...
</div>
<div class="previewBox" id="second_div">
...
</div>
<div class="previewBox" id="third_div">
...
</div>
jquery 代码
$(".previewBox").click(function () {
$(".previewBox.active").removeClass('active')
$(this).addClass('active')
});
css
.active {
background-color:#e9f1f5;
border-left:4px solid #024a81;
}
演示 click_this
答案 5 :(得分:-1)
javafx.scene.layout
$(document).ready(function(){
$('.cliked').click(function() {
$(".cliked").removeClass("liactive");
$(this).addClass("liactive");
});
});
.liactive {
background: orange;
}