javascript - 尝试在其旁边放置具有相同类名的另一个 div 时,div 被替换
问题描述
问题:
我有一个可以选择颜色的下拉菜单。选择颜色后,下拉菜单关闭,所选颜色由框 div 表示,背景图像设置为具有所选颜色的图像。
这只是让使用页面的人知道他们选择了什么颜色的一种方式。如果他们想选择更多颜色,他们可以返回颜色菜单并选择另一种颜色。发生这种情况时,应将新选择的颜色放在先前选择的颜色旁边。
我试过的:
我正在使用背景图像来表示颜色。无论如何,我无法达到我想要的效果。第一个选择颜色 div 刚刚被新的替换。我浏览了很多帖子并尝试过 .prepend()、.append()、.after()、.insertAfter()。
我已经在 JSFiddle 上复制了我的代码。我有一个显示页面加载时间的默认图像,然后每次单击包含 div 框的容器时,我都会尝试附加一个新图像。
我的代码:
HTML:
<div class="colour-boxes-container">
<div class="colour-box" style="background-image: url('https://cdn.clipart.email/0197fe6d344ce508961ca63564ce8466_blue-square-clip-art-at-clkercom-vector-clip-art-online-_578-600.svg')"></div>
</div>
JS:
$(".colour-boxes-container").on('click', function() {
alert("Clicked container");
var newSelectedColour = $(".colour-box")
.css("background-image", "url('https://media.istockphoto.com/photos/bright-brown-leather-texture-seamless-square-background-tile-r-picture-id958497414')")
$(".colour-box:last").after(newSelectedColour);
});
CSS:
.colour-boxes-container {
height: 55px;
width: auto;
border: 1px solid;
display: flex;
align-items: center;
justify-content: left;
}
.colour-box {
height: 33px;
width: 33px;
margin-right: 7px;
}
https://jsfiddle.net/m0c8q742/1/
我在这里能错过什么?
解决方案
这段代码是问题所在:
$(".colour-box")
.css("background-image", "url('https://media.istockphoto.com/photos/bright-brown-leather-texture-seamless-square-background-tile-r-picture-id958497414')")
这段代码本质上是说“在页面上查找任何具有“颜色框”类的元素,并更改这些元素的 CSS 背景图像。” 您一直在更新旧元素,而不是创建新元素。
如果要创建新元素,可以执行以下操作:
$(".colour-boxes-container").on('click', function() {
var $div = $(document.createElement('div'));
$div.addClass('colour-box');
$div.css("background-image", "url('https://media.istockphoto.com/photos/bright-brown-leather-texture-seamless-square-background-tile-r-picture-id958497414')")
$(".colour-boxes-container").append($div);
});
推荐阅读
- conditional-statements - 避免逻辑重复
- javascript - 这种冒泡排序的实现是错误的吗?
- mqtt - mqtt 无效负载内容,ftp
- android-studio - Android Studio 3.4.2 中是否有用于擦除虚拟设备数据的命令行?
- c++ - 如何将 PHI 节点添加到每个基本块的开头
- logstash-grok - 如何根据匹配创建和提取 new_field [msg]
- c++ - 基于我们实现类方法的位置的性能
- next.js - nextjs 根据 NODE_ENV 设置 process.env.baseUrl
- pyspark - 从 pyspark 数据框列中删除 HTML 标记
- angular - 由于多重错误,将 Angular 应用程序推送到 Heroku 时遇到问题