我有一个简单的功能来将列表项类从"活动"切换到"非活动".什么是最有效的方式(即使用最少量的代码)将所有其他列表项设置为"非活动",以便只能有一个"活动"列表项?请参阅下面的示例.谢谢
<ul class="menu">
<li id="one" class="active">One</li>
<li id="two" class="inactive">Two</li>
<li id="three" class="inactive">Three</li>
<li id="four" class="inactive">Four</li>
<li id="five" class="inactive">Five</li>
</ul>
<script>
$('#one').click(function () {
if ($(this).hasClass("inactive")) {
$(this).removeClass("inactive").addClass("active");
} else {
$(this).removeClass("active").addClass("inactive");
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
Kar*_*non 11
这可以工作:
$('.menu li').click(function () {
$('.menu li').not(this).removeClass('active').addClass('inactive');
$(this).addClass('active').removeClass('inactive');
});
Run Code Online (Sandbox Code Playgroud)
要么
$('.menu li').click(function () {
$('.menu li').removeClass('active').addClass('inactive');
$(this).toggleClass('active inactive');
});
Run Code Online (Sandbox Code Playgroud)
第二种方法更短,但更慢.
http://jsperf.com/toggle-vs-add-remove
编辑:这个更短更快:
$('.menu li').click(function () {
$('.menu li').not(this).removeClass('active');
$(this).addClass('active');
});
Run Code Online (Sandbox Code Playgroud)
如果性能确实存在问题,您可以将菜单存储在变量中并对此变量执行操作,例如:
var $menu = $('.menu li');
$menu.click(function () {
$menu.not(this).removeClass('active');
$(this).addClass('active');
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12743 次 |
| 最近记录: |