如何通过使用(单击)鼠标拖动它们来更改多个div的背景颜色?

use*_*453 5 html jquery drag-and-drop mousedown

请看一下这个例子.

我有4个div,白色背景.当我点击div时,它的背景变为蓝色.当我再次单击它时,背景切换回白色.

现在我想通过拖动来突出显示多个div:我点击第一个div并按住鼠标按钮.div变蓝了.使用单击的按钮,我可以现在拖动其他div,并且一旦光标在元素上方,它们的颜色就会改变.

我已经尝试过使用JQuery的.mousedown函数,但我没有让它工作.

HTML:

<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
Run Code Online (Sandbox Code Playgroud)

CSS

.box{
    float: left;
    height: 100px;
    width: 100px;
    border: 1px solid #000;
    margin-right: 10px;
}

.highlight{
    background: #0000FF;
}
Run Code Online (Sandbox Code Playgroud)

JS

$(document).ready(function(){
   $('.box').click(function(){
        if($(this).hasClass('highlight')){
            $(this).removeClass('highlight');
        }
        else{
            $(this).addClass('highlight');
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

Aru*_*hny 4

可以使用mouseenter事件来处理

$(document).ready(function () {
    var $box = $('.box').mousedown(function () {
        $(this).toggleClass('highlight');
        var flag = $(this).hasClass('highlight')
        $box.on('mouseenter.highlight', function () {
            $(this).toggleClass('highlight', flag);
        });
    });
    $(document).mouseup(function () {
        $box.off('mouseenter.highlight')
    })
});
Run Code Online (Sandbox Code Playgroud)

演示:小提琴