我有一种情况,我需要根据最接近的父元素的背景,使用.box
类来动态更改列表项的背景。如果该父级也具有.gray
级别,则将此列表中的跨度元素的当前背景替换为黑色背景,否则将其替换为白色。 我试过这种方法(下面的代码),它返回适量的trues和falses,但if/then part不会工作,它只是替换所有元素中的背景颜色,而不仅仅是在一个列表中。检查每个元素并根据父级(JavaScript/jQuery)对其进行更改
$(document).ready(function() {
\t $('.box-list li span').each(function(){
\t \t var is_gray = $(this).closest('.box').hasClass('gray');
\t \t \t console.log (is_gray);
\t \t
\t \t if (is_gray = true) {
\t \t \t $('.box-list li span').css('background', '#999');
\t \t }
\t \t else {
\t \t \t $('.box-list li span').css('background', '#fff');
\t \t }
\t });
});
.box-list {
list-style: none;
padding: 0;
overflow-x: hidden;
\t width: 100%;
}
.box-list li:before {
float: left;
width: 0;
white-space: nowrap;
content:"· · · · · · · · · · · · · · · · · · · · ""· · · · · · · · · · · · · · · · · · · · ""· · · · · · · · · · · · · · · · · · · · ""· · · · · · · · · · · · · · · · · · · · ""· · · · · · · · · · · · · · · · · · · · "
}
.box-list li span:nth-child(2) {
float: right;
}
.box-list li {
\t margin: 0 0 10px 0;
}
.box-list li:last-child {
\t margin: 0 !important;
}
.box-list li span {
\t padding: 0 10px;
}
.box { \t
\t padding-right: 3rem;
\t padding-left: 3rem;
\t padding-top: 1.5rem !important;
\t padding-bottom: 3rem !important;
}
.box.gray {
\t background: #efefef !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class = "box gray">
<div>
<ul class="box-list">
<li>
<span>
List item
</span>
<span>
1
</span>
</li>
<li>
<span>
Another list item
</span>
<span>
2
</span>
</li>
<li>
<span>
And another one
</span>
<span>
3
</span>
</li>
<li>
<span>
And one more
</span>
<span>
4
</span>
</li>
<li>
<span>
Secont to last list item
</span>
<span>
5
</span>
</li>
<li>
<span>
The last list item
</span>
<span>
6
</span>
</li>
</ul>
</div>
</div>
<div class = "box">
<div>
<ul class="box-list">
<li>
<span>
List item
</span>
<span>
1
</span>
</li>
<li>
<span>
Another list item
</span>
<span>
2
</span>
</li>
<li>
<span>
And another one
</span>
<span>
3
</span>
</li>
<li>
<span>
And one more
</span>
<span>
4
</span>
</li>
<li>
<span>
Secont to last list item
</span>
<span>
5
</span>
</li>
<li>
<span>
The last list item
</span>
<span>
6
</span>
</li>
</ul>
</div>
</div>