我会试着解释我想做什么。如果多个类超过2个,如何在多个类之间切换?当我点击彩色按钮时,容器颜色类将被添加/交换。当我单击白色按钮时,它将删除容器颜色类。
为了更好地理解,这里有一个JSFiddle示例:https://jsfiddle.net/bwd86h4e/1/
我希望有人能帮上忙。谢谢。
HTML:
<div class="buttons">
<div class="btn btn-reset"></div>
<div class="btn btn-red"></div>
<div class="btn btn-green"></div>
<div class="btn btn-yellow"></div>
</div>
<div class="container">
When I click on the colored buttons above, then container color class will exchanged. When I click on the white button, then it removes container color class. How to do it?
</div>CSS:
/* Buttons */
.btn {
display: inline-block;
width: 30px;
height: 30px;
margin: 3px;
cursor: pointer;
border: 2px solid #333;
}
.btn.btn-red { background-color: red; }
.btn.btn-green { background-color: green; }
.btn.btn-yellow { background-color: yellow; }
/* Container */
.container {
max-width: 480px;
margin-top: 20px;
padding: 40px;
border: 2px solid #333;
}
/* Container color classes */
.container.cont-red { background-color: red; }
.container.cont-green { background-color: green; }
.container.cont-yellow { background-color: yellow; }发布于 2018-07-05 22:28:17
像这样的纯javascript:
var buttons = document.querySelectorAll(".btn");
var container = document.getElementById("container_1");
var container_color_classes = ["cont-red","cont-green","cont-yellow"];
buttons.forEach(function(button){
button.addEventListener("click", function(){
container_color_classes.forEach(function(color){
container.classList.remove(color);
})
var className = this.getAttribute("data-class");
if(className !== null)
container.classList.add(className);
});
});/* Buttons */
.btn {
display: inline-block;
width: 30px;
height: 30px;
margin: 3px;
cursor: pointer;
border: 2px solid #333;
}
.btn.btn-red { background-color: red; }
.btn.btn-green { background-color: green; }
.btn.btn-yellow { background-color: yellow; }
/* Container */
.container {
max-width: 480px;
margin-top: 20px;
padding: 40px;
border: 2px solid #333;
}
/* Container color classes */
.container.cont-red { background-color: red; }
.container.cont-green { background-color: green; }
.container.cont-yellow { background-color: yellow; }<div class="buttons">
<div class="btn btn-reset"></div>
<div class="btn btn-red" data-class="cont-red"></div>
<div class="btn btn-green" data-class="cont-green"></div>
<div class="btn btn-yellow" data-class="cont-yellow"></div>
</div>
<div class="container" id="container_1">
When I click on the colored buttons, then container color class will added/exchanged. When I click on the white button, then it removes container color class. <strong>How to do it?</strong>
</div>
发布于 2018-07-05 21:12:28
您可以使用jQuery:
$('.btn').click(function()
{
var color = $(this).attr('data-class');
//check to see if el has class btn-reset
if ($(this).hasClass('btn-reset')) {
$('.container').attr('class', 'container')
} else {
$('.container').attr('class', 'container cont-'+ class)
}
})您的html将更改为:
<div class="buttons">
<div class="btn btn-reset" data-class="reset"></div>
<div class="btn btn-red" data-class="red"></div>
<div class="btn btn-green" data-class="green"></div>
<div class="btn btn-yellow" data-class="yellow"></div>
</div>参考文献:
https://api.jquery.com/addClass/
https://api.jquery.com/hasClass/
jsFiddle:https://jsfiddle.net/fkopmjyx/
发布于 2018-07-05 21:15:16
您可以使用add class来切换类
let container = $('.container');
$('.btn').click(function(){
container.attr('class', 'container');
if($(this).hasClass('btn-red')) container.addClass('cont-red');
else if($(this).hasClass('btn-green')) container.addClass('cont-green');
else if($(this).hasClass('btn-yellow')) container.addClass('cont-yellow');
});https://stackoverflow.com/questions/51192136
复制相似问题