javascript - 与先前加法等级的位移

标签 javascript jquery css

您好,我正在尝试使用 jquery 替换之前的附加类。但是我的测试代码无法正常工作。

我创建了这个 DEMO 来自 codepen.io

之前点击的颜色位置需要留下新点击的重命名。

如果您检查 demo 开发者控制台中的页面。当您单击红色 div 时。这个颜色类自动添加 .changeBgcolor div like

<div class="changeBgcolor red"></div>

但是像这样点击模糊颜色div之后

<div class="changeBvcolor red blue"></div>

红色类留在那儿,应该保留新点击的颜色。

<div class="changeBgcolor">Background color changing BOX</div>
<div class="color">
   <div class="kek red" id="1">Red</div>
   <div class="kek blue" id="2">Blue</div>
   <div class="kek green" id="3">Green</div>
   <div class="kek yellow" id="4">Yellow</div>
   <div class="kek orange" id="5">Orange</div>
   <div class="kek black" id="6">Black</div>
</div>

JS

$(document).ready(function() {
    $("body").on("click", ".red", function(event) {
    $(".changeBgcolor").addClass("red");
  });
    $("body").on("click", ".blue", function(event) {
    $(".changeBgcolor").addClass("blue");
  });
   $("body").on("click", ".green", function(event) {
    $(".changeBgcolor").addClass("green");
  });
   $("body").on("click", ".yellow", function(event) {
    $(".changeBgcolor").addClass("yellow");
  });
   $("body").on("click", ".orange", function(event) {
    $(".changeBgcolor").addClass("orange");
  });
   $("body").on("click", ".black", function(event) {
    $(".changeBgcolor").addClass("black");
  });
});
.changeBgcolor {
  padding:30px;
   border-bottom:1px solid #d8dbdf;
}
.kek {
   float:left;
   height:30px;
   margin:0px 30px;
   cursor:pointer;
   text-align:center;
   line-height:30px;
   padding:10px;
}
.color {
   position:relative;
   padding:30px 0px;
}

.red {
   background-color:red;
   color:#ffffff;
}
.blue {
   background-color:blue;
   color:#ffffff;
}
.green {
   background-color:green;
   color:#ffffff;
}
.yellow {
   background-color:yellow;
}
.orange {
   background-color:orange;
}
.black {
   background-color:black;
   color:#ffffff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="changeBgcolor">Background color changing BOX</div>
<div class="color">
   <div class="kek red" id="1">Red</div>
   <div class="kek blue" id="2">Blue</div>
   <div class="kek green" id="3">Green</div>
   <div class="kek yellow" id="4">Yellow</div>
   <div class="kek orange" id="5">Orange</div>
   <div class="kek black" id="6">Black</div>
</div>

最佳答案

您可以将原始类存储在变量中,然后点击添加点击的 div 的类。

var c = $(".changeBgcolor").attr('class')
$('.color > div').click(function() {
  $(".changeBgcolor").attr('class', c + ' ' + $(this).attr('class').split(' ')[1])
})
.changeBgcolor {
  padding: 30px;
  border-bottom: 1px solid #d8dbdf;
}
.kek {
  float: left;
  height: 30px;
  margin: 0px 30px;
  cursor: pointer;
  text-align: center;
  line-height: 30px;
  padding: 10px;
}
.color {
  position: relative;
  padding: 30px 0px;
}
.red {
  background-color: red;
  color: #ffffff;
}
.blue {
  background-color: blue;
  color: #ffffff;
}
.green {
  background-color: green;
  color: #ffffff;
}
.yellow {
  background-color: yellow;
}
.orange {
  background-color: orange;
}
.black {
  background-color: black;
  color: #ffffff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="changeBgcolor">Background color changing BOX</div>
<div class="color">
  <div class="kek red" id="1">Red</div>
  <div class="kek blue" id="2">Blue</div>
  <div class="kek green" id="3">Green</div>
  <div class="kek yellow" id="4">Yellow</div>
  <div class="kek orange" id="5">Orange</div>
  <div class="kek black" id="6">Black</div>
</div>

关于javascript - 与先前加法等级的位移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42174788/

相关文章:

javascript - 在 onClick 行之后给行颜色并请求其他页面并保持颜色更改

javascript - <tr> 标签没有创建新行?

javascript - Blogger 元素/静态页面未显示任何内容

javascript - 如何查找 HTMLElement 是否包含在所选文本中

javascript - d3.csv 将 map 数据作为数组

javascript - 是否可以在 C# 中使用 selenium/webdriver 来测试 FireFox 中的文件拖放

jquery - 更改 eventClick 仅在 jQuery FullCalendar 插件中双击时发生

HTML 如何使登录表单带我到一个网站

jquery - 自定义评分系统

html - 难以将元素与 Bootstrap 对齐