![](/img/trans.png)
[英]Change outer ul background color when inner li has a class="selected"
[英]Unable to change the background color of the selected li item in a UL
我需要你的幫助,
如何更改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>
您不需要這里的.closest()
,因為#list1
是li
的祖先:
that.find('li.selected').removeClass('selected');
但是實際上,我認為您要嘗試的是向單擊的li
添加.active
並從另一個li
刪除此active
類,如果是這種情況,則可以執行以下操作:
$('#list1 ul li').click(function () {
$('#list1 ul li').removeClass('selected');
$(this).addClass('selected');
});
嘗試這個:
var $items = $('#list1 li').click(function() {
$items.removeClass('selected');
$(this).addClass('selected');
});
沒有理由繼續為此任務選擇新元素。 只需創建所有列表項( $items)
的集合,然后將其重用於從上一個項目中刪除selected
類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.