1

好的,所以我有一个 div 网格,如下所示:

<div class="check1"></div>
<div class="check1"></div><div style="clear:both;"></div>
<div class="check1"></div>
<div class="check1"></div>

在我的 jquery 中,我检查是否已使用以下方式单击了其中一个 div:

$('.check1').mousedown(function(){
    $(this).css('background-color','blue');
});

我想要做的是,如果一个 div 被 cliced 并按住但光标移动到另一个 div 我也希望该 div 改变颜色。我尝试了这个示例,但是无论是否调用了鼠标按下事件,都会调用 mouseover 事件。

$('.check1').mousedown(function(){
    $(this).css('background-color','blue');

    $('.check1').mouseover(function(){
        $(this).css('background-color', 'blue');
    });
});

这可能吗?如果可以,我做错了什么/我需要改变什么?

4

4 回答 4

5

你可以使用一个简单的flag概念

代码:

var flag = 0;
$('.check1').mousedown(function () {
    $(this).css('background-color', 'blue');
    flag = 1;
}).mouseup(function () {
    flag = 0;
}).mouseover(function () {
    if (flag) {
        $(this).css('background-color', 'blue');
    }
});

测试链接

于 2013-06-21T09:34:59.177 回答
2

最短的方法:)

$('.check1').on('mouseover mousedown', function(e){
    if (e.which == 1){
        $(this).css('background-color', 'blue');
    }
});

http://jsfiddle.net/bLARP/

于 2013-06-21T09:57:29.623 回答
0

尝试这个 :

$('.check1').mousedown(function(){
    $(this).css({'background-color','blue'});

    $(this).bind('mouseover', function(){
        $(this).css({'background-color':'blue'});
    }).bind('mouseout', function(){
        $(this).css({'background-color':'green'});
    });
});
于 2013-06-21T09:35:41.947 回答
0

您只是忘记取消绑定mouseover事件。

$('.check1').mousedown(function(){

    $(this).css('background-color', 'blue')

    $('.check1').on('mouseover',function(){
        $(this).css('background-color', 'blue')
    });

    $(document).mouseup(function(){
        $('.check1').off('mouseover');
    });
});

现场示例:http: //jsfiddle.net/vREzg/

于 2013-06-21T09:49:40.620 回答