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

时间:2014-03-21 04:50:23

标签: jquery html drag-and-drop mousedown

请查看this example

我有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>

CSS

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

.highlight{
    background: #0000FF;
}

JS

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

2 个答案:

答案 0 :(得分: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')
    })
});

演示:Fiddle

答案 1 :(得分:2)

尝试,

$(document).ready(function () {
    var isMouseClicked = false
    $('.box').mousedown(function () {
        isMouseClicked = true;
    }).mouseup(function () {
        isMouseClicked = false;
    }).mousemove(function () {
        if (isMouseClicked) {
            $(this).addClass("highlight");
        }
    });
});

DEMOhttp://jsfiddle.net/Vk24X/2/