将元素放置在方框顶部时更改方框的背景色
Change background color of a box when an element is dropped on top of it
使用jQuery,我有一个名为dropblock
的可拖动元素,其revert
参数设置为true
。当dropblock
被放在一个名为blocks
的盒子列表上时,我希望它被放在上面的盒子——以及它的两个近邻——在dropblock
恢复到其原始位置之前改变它们的背景颜色(比如说红色)。但作为一个JavaScript初学者,我不知道如何开始做这件事。有没有办法判断dropblock
掉落时鼠标悬停在哪个框上?
以下是我的代码在去掉与这个问题无关的所有内容后的样子:
MVCE.html:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Stackexchange MVCE</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.3/themes/smoothness/jquery-ui.css">
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.11.3/jquery-ui.js"></script>
<script src="MVCE.js"></script>
<link rel="stylesheet" href="MVCE.css">
</head>
<body>
<ul id="blocks">
<li class="ui-state-default" id="block-1"></li>
<li class="ui-state-default" id="block-2"></li>
<li class="ui-state-default" id="block-3"></li>
<li class="ui-state-default" id="block-4"></li>
<li class="ui-state-default" id="block-5"></li>
<li class="ui-state-default" id="block-6"></li>
</ul>
<ul id="dropblock">
<li class="ui-state-default"></li>
</ul>
</body>
</html>
MVCE.css:
#blocks {
list-style-type: none;
display: inline-block;
width: 300px;
}
#blocks li {
margin: 3px 3px 0px 0;
width: 30px;
height: 30px;
}
#dropblock {
list-style-type: none;
display: inline-block;
vertical-align: top;
position: relative;
width: 150px;
}
#dropblock li {
margin: 3px 3px 0px 0;
float: left;
width: 30px;
height: 30px;
font-size: 4em;
text-align: center;
}
MVCE.js:
$(function() {
$( "#dropblock" ).draggable({
revert: true});
});
元素#blocks li
需要是可丢弃的,因此您将调用.droppable()
方法。
在drop
事件中,您将访问要放入的元素及其相邻的同级元素。在本例中,.active
类被添加到目标元素及其同级元素(使用.next()
/.prev()
方法)。.active
类也被从所有先前活动的元素中移除。
此处示例
$('#dropblock').draggable({
revert: true
});
$('#blocks li').droppable({
tolerance: 'touch',
drop: function(event, ui) {
$('#blocks li.active').removeClass('active');
$(this).add($(this).next()).add($(this).prev()).addClass('active');
}
});
根据您的喜好更改tolerance
选项。在上面的示例中,它设置为touch
,因为可拖动/可丢弃元素的大小相同。
您可以在每个框上使用.dropable()。然后,您可以访问下一个和上一个兄弟姐妹来更改它们的颜色。
相关文章:
- jquery.each(第2行)添加背景色
- 如果使用javascript函数屏幕太小,我该如何更改HTML文件的背景色
- 悬停时淡入背景色
- 如何在单击单元格中的链接值时动态更改表行背景色
- Gridview内部的下拉框在回发时未保留背景色
- 用背景色智能填充引导列
- 带有背景色的高图表柱形图
- 带有javascript的选定文本的背景色
- 当代码使用背景色时无法更改位置
- 将元素放置在方框顶部时更改方框的背景色
- 检索表中元素的背景色
- 在Wordpress中创建随机背景色
- 存在事件的单元格的jQuery DatePicker背景色(加载时)
- CSS转换未在增加高度时更新背景色
- 如何设置按钮来更改按钮的背景色
- 避免使用背景色和边框色
- 更改表列javascript的背景色
- 使用Jquery选中复选框时,更改复选框的背景色
- 更改HTML中所选区域的背景色/不透明度
- 如何根据下拉列表更改所选行的背景色