1

我有这个带有颜色选项列表的菜单。其中一种颜色是“蓝色”并且有一类“选定”,我的背景颜色是“蓝色”。我想根据选择的颜色类别来更改背景颜色。我已经知道如何更改类,但现在我想知道如何用协调颜色识别“选定”类。

这是我的代码:

jQuery :

var coorColor;
$(".item").click(function() {
    $(".item").removeClass("selected");
    $(this).addClass("selected");
    $("body").css("background", coorColor);
});

// THIS IS THE PART I NEED HELP WITH

if($(".item.red.selected")) {
    coorColor = "red";
}

if($(".item.green.selected")) {
    coorColor = "green";
}

etc...

HTML:

<ul>
    <li class="item blue selected">Blue</li>
    <li class="item red">Red</li>
    <li class="item green">Green</li>
</ul>

CSS:

/* because the item "blue" is selected by default the body's bg-color is blue by default but will change according to jQuery */

body {
    background: blue;
}

.selected {
    text-shadow: 1px 1px 10px #565756;
}
4

3 回答 3

2

您可以检查所选元素中的类:

$(".item").click(function() {
  $(".item").removeClass("selected");
  $(this).addClass("selected");

  if ($(this).hasclass("blue")) {
    coorColor = "blue";
  } else if ($(this).hasclass("red") {
    coorColor = "red";
  }

  $("body").css("background", coorColor);
});
于 2012-11-25T23:31:47.200 回答
1

一个稍微简单的方法是使用data-属性:

<ul>
    <li data-color="blue"  class="item blue selected">Blue</li>
    <li data-color="red"   class="item red">Red</li>
    <li data-color="green" class="item green">Green</li>
</ul>

您的代码将变为:

var coorColor = $('.item.selected').data('color');
于 2012-11-25T23:35:32.197 回答
0

如果你打算只为项目提供这些类,你可以这样做

$(".item").click(function() {
    $(".item").removeClass("selected");

    /* this will eliminate the unwanted classes leaving just the color class */
    var coorColor = $(this).attr('class').replace(new RegExp('item|anotherClass| ', 'g'), '');

    $(this).addClass("selected");
    $("body").css("background", coorColor);
});
于 2012-11-25T23:47:37.310 回答