gpt4 book ai didi

javascript - 当元素放置在盒子顶部时更改盒子的背景颜色

转载 作者:行者123 更新时间:2023-12-02 16:24:36 25 4
gpt4 key购买 nike

使用 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 ,因此您将调用 .droppable() method .

drop event内,您将访问要放入的元素及其相邻的同级元素。在此示例中,.active 类被添加到目标元素及其同级元素(使用 .next()/.prev() 方法)。 .active 类也将从所有以前的事件元素中删除。

Example Here

$('#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 option根据您的喜好。在上面的示例中,它设置为 touch,因为可拖动/可放置元素的大小相同。

关于javascript - 当元素放置在盒子顶部时更改盒子的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28798428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com