我需要你的帮助,
如何更改UL列表中所选LI项的背景(使用jQuery)。就像现在一样,唯一被改变的是我列表的整个背景。最后要注意的是,如果选择了新的LI项目,颜色应该默认为白色。
<!DOCTYPE html>
<html>
<script src="jquery.min.js"></script>
<head>
<style type="text/css">
#container {
width: 200px;
}
#list1 {
border: 1px solid red;
width: 100%;
}
#list1 ul {
margin: 0;
padding: 3px;
list-style-type: none;
}
#list1 li {
cursor: default;
}
.selected {
background: blue;
}
</style>
<script type="text/javascript">
window.onload = function() {
$('#list1').click(function(){
var that = $(this);
that.closest('li').find('.selected').removeClass('selected');
that.addClass('selected');
});
}
</script>
</head>
<body>
<div id="container">
<div id="list1">
<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
</div>
</div>
</body>
</html>
答案 0 :(得分:0)
您不需要.closest()
,因为#list1
是您li
的祖先:
that.find('li.selected').removeClass('selected');
但实际上,我认为您尝试做的是添加.active
点击li
并从其他active
中删除此li
类,如果是这种情况,那么你可以这样做:
$('#list1 ul li').click(function () {
$('#list1 ul li').removeClass('selected');
$(this).addClass('selected');
});
<强> Fiddle Demo 强>
答案 1 :(得分:0)
试试这个:
var $items = $('#list1 li').click(function() {
$items.removeClass('selected');
$(this).addClass('selected');
});
没有理由继续为此任务选择新元素。只需创建所有列表项的集合($items)
),然后重复使用它来删除上一项中的selected
类。