5

html

<ul class="logoUl">
    <li class="orange"></li>
    <li class="blue"></li>
    <li class="green"></li>
    <li class="pink"></li>
</ul>

脚本

if (selectedCategory == 'currentAll') {

    var strString = "orange,blue,green,pink";
    var strArray = strString.split(',');

    $.each(strArray, function (index, value) {
        $("ul.logoUl > li").addClass(value)
    });
}

ul.logoUL 中有 4 个 li 制作图像在此处输入图像描述 有时徽标会获得背景颜色,这会将颜色重置为灰色像这样

目前我的代码不会重置颜色在此处输入图像描述

问题:

如何li在一次添加一个类的同时迭代一个,希望通过类获得原始的配色方案?

4

2 回答 2

6
var strString = "orange,blue,green,pink",
    strArray = strString.split(',');

$("ul.logoUl > li").each(function (index, value) {
    $(this).addClass(strArray[index]);
});

演示

没有循环:

var strString = "orange,blue,green,pink",
    strArray = strString.split(',');

$("ul.logoUl > li").addClass(function (index) {
    return strArray[index];
});

演示

笔记

由于您有时会更改class每个li以使它们相似background,因此当您想再次为它们提供原始配色方案时,最好先删除先前分配的颜色class,然后再分配原始颜色,class如下所示:

var strString = "orange,blue,green,pink",
    strArray = strString.split(',');

$("ul.logoUl > li")
    .removeClass() // first remove previous class
    .addClass(function (index) { // then add new class
        return strArray[index];
    });

演示

于 2012-06-22T05:40:35.500 回答
2

您可以使用

if (selectedCategory == 'currentAll') {

    var strString = "orange,blue,green,pink";
    var strArray = strString.split(',');

    $.each(strArray, function (index, value) {
        $("ul.logoUl > li").eq(index).addClass(value)
    });
}

演示:http: //jsfiddle.net/joycse06/j4qqS/

于 2012-06-22T05:39:07.287 回答