我有一个无序列表,当用户单击其中一个列表项时,列表项会获得一个“活动”类。是否有可能写出一个声明。如果用户点击$(this)到另一个列表项addClass(“active2”)。 如果你不明白让我知道。谢谢!
答案 0 :(得分:1)
我理解你的问题:
第一个单击的项始终保持类
active2
,任何其他单击的项都会获得类active
(从之前单击的项中删除active
)。
解决方案如下所示:
active
的项目,则之前未选择任何项目,因此您将active
添加到当前项目中。 active2
,请将active2
添加到包含类active
的项目中,删除active
并将其添加到当前项目中。 active
和active2
,请从该项中删除active
并将active
添加到当前项目。在代码中看起来像这样:
var $lis = $("#myList li");
$('#myList').on('click', 'li', function() {
if($lis.hasClass('active')) {
if(!$lis.hasClass('active2')) {
$lis.filter('.active').toggleClass('active active2');
}
else {
$lis.filter('.active').removeClass('active');
}
}
$(this).addClass('active');
});
或者,因为在第二次点击一个项目之后,总会有包含这些类的元素项,你也可以简单地使用标志而不是一遍又一遍地搜索元素。
答案 1 :(得分:0)
修订后的问题修订答案:
$(document).ready(function() {
$('ul#myList li:not(.active)').click(function() {
// user has clicked on an li that does not have class="active"
$(this).addClass('active');
$('ul#myList li.active').each(function() {
// for each li with class="active", remove it and add "active2"
$(this).removeClass('active').addClass('active2');
});
});
});