使用 javascript onclick 将类名添加到 div
2017-08-24
2863
我想用 javascript 实现类似当我点击任意一个缩略图(btn-1、btn-2 和 btn-3)时,特定类应该动态添加到框 div 中。
我的代码: JSFiddle
document.getElementById('btn-1').onclick = function() {
document.getElementById('box').className = 'bg-1';
}
#box {
background-color: darkgray;
width: 200px;
height: 200px;
}
.thumbnail {
width: 30px;
height: 30px;
border: 1px solid;
margin: 5px;
position: relative;
float: left;
}
#btn-1 {
background-color: red;
}
#btn-2 {
background-color: green;
}
#btn-3 {
background-color: blue;
}
.bg-1 {
background-color: red;
}
.bg-2 {
background-color: blue;
}
.bg-3 {
background-color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="box"></div>
<div class="thumbnail" id="btn-1"></div>
<div class="thumbnail" id="btn-2"></div>
<div class="thumbnail" id="btn-3"></div>
3个回答
您的 javascript 可以运行,但 CSS 却不行。
您需要向 .bg-1、.bg-2 和 .bg-3 添加 !important,如下所示
.bg-1 {
background-color: red !important;
}
否则,id 样式将优先于 class 样式
如果在 Chrome 中右键单击灰色 div 并选择检查元素,则可以看到已添加 classname。
TripWire
2017-08-24
不用费心使用类,只需使用
data-
属性,例如:
data-bg="#f00"
$('[data-bg]').css('background', function () {
$(this).on('click', () => $('#box').css('background', this.dataset.bg));
return this.dataset.bg;
});
#box {
background: darkgray;
width: 120px; height: 120px;
}
[data-bg] {
width: 30px; height: 30px;
margin: 5px;
float: left;
}
<div id="box"></div>
<div data-bg="red"></div>
<div data-bg="#00f"></div>
<div data-bg="rgb(255,0,180)"></div>
<div data-bg="linear-gradient(to right, #E100FF, #7F00FF)"></div>
<script src="//code.jquery.com/jquery-3.1.0.js"></script>
Roko C. Buljan
2017-08-24
您想使用 jquery .addClass() 函数:
$('.myButton').addClass('myNewClass');
该函数可能看起来像这样:
$(function () {
$('.thumbnail').click(function() {
$('#box').addClass($(this).attr('id'));
});
})
Leo Van Deuren
2017-08-24