我正在尝试通过单击其中一个图像来更改div背景颜色。 新的DIV颜色应该是图像ID的第二部分。
#box {
width: 200px;
height: 200px;
background-color: #3FA5D5;
}
.black {
background-color: #000000 !important;
}
.red {
background-color: #990000 !important;
}
.blue {
background-color: #990000 !important;
}
.green {
background-color: #990000 !important;
}
<div id="box">BGCOLOR TO CHANGE HERE</div>
<br />
<img id="color black" src="images/black.png" alt="" />
<img id="color red" src="images/red.png" alt="" />
<img id="color blue" src="images/blue.png" alt="" />
<img id="color green" src="images/green.png" alt="" />
答案 0 :(得分:1)
您的ID值无效。使用数据属性来存储&#34;元数据&#34; (例如颜色名称或十六进制值等):
e.g:
<img class="color" data-color="black" src="images/black.png" alt="" />
然后代码简化为:http://jsfiddle.net/TrueBlueAussie/43txyxeg/
$('img.color').click(function(){
$('#box').removeClass("black red blue green").addClass($(this).data('color'));
});
通常最好使用类来设置样式(正如您所做的那样,但是如果您只是更改颜色,则可以简化代码并丢弃样式:
http://jsfiddle.net/TrueBlueAussie/43txyxeg/2/
$('img.color').click(function(){
$('#box').css({"background-color": $(this).data('color')});
});
注意:数据属性方法意味着您可以拥有任何颜色值(甚至是十六进制颜色):例如
http://jsfiddle.net/TrueBlueAussie/43txyxeg/5/
<img class="color" data-color="#123456" src="images/blah.png" alt="" />
答案 1 :(得分:0)
我想您希望能够在单击相应图像时更改div的颜色。你可以做什么
$('img.color').click(function(){
$('#box').css('backgroundColor', this.src.split('/')[1].split('.')[0]);
});
当然,您需要将id
更改为class
,因为这是您使用它的方式。
答案 2 :(得分:0)
您的代码存在一些问题,请查看示例。
我已更新您的html以使用类和数据属性。
<div id="box">BGCOLOR TO CHANGE HERE</div>
<br />
<img class="color-select" data-color="black" src="images/black.png" alt="" />
<img class="color-select" data-color="red" src="images/red.png" alt="" />
<img class="color-select" data-color="blue" src="images/blue.png" alt="" />
<img class="color-select" data-color="green" src="images/green.png" alt="" />
添加了需要Jquery的javascript。
$(document).ready(function() {
$('.color-select').click(function() {
$('#box').css("background",$(this).data("color"));
});
});
答案 3 :(得分:0)
id
元素不应包含空格 - 假设您的图像名称是有效的css颜色名称,如示例所示,您可以执行以下操作:
$(function (e) {
$("img").click(function(){
var color = this.src.substring(this.src.lastIndexOf('/')+1,this.src.lastIndexOf('.'));
$("#box").css("background",color);
})
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="box">BGCOLOR TO CHANGE HERE</div>
<br />
<img id="color black" src="images/black.png" alt="blabk" />
<img id="color red" src="images/red.png" alt="red" />
<img id="color blue" src="images/blue.png" alt="blue" />
<img id="color green" src="images/green.png" alt="green" />
&#13;