Javascript mousedown和mouseup在不同的元素上

时间:2012-10-09 09:43:57

标签: javascript jquery html

我正在尝试在JS中开发一个单词搜索游戏,如下所示:https://jquery-wordsearch-game.googlecode.com/svn/trunk/demo.html

BTW我不是在使用那个人的插件而是试图自己开发。

我正在使用以下代码触发处理程序,以在用户点击并移动它们时突出显示单元格。

$('#puzzlecontainer').on('mousedown','.block',myHandler);

问题是mousedown事件仅在第一个单元格上触发。我希望处理程序能够触发鼠标路径中的所有单元格。

另外,如何使其与触摸事件兼容?我尝试过touchmove和touchdown。

请帮忙

更新

在Shusl的帮助下,我添加了以下代码: var ismosedown = false;

        $('#puzzlecontainer').on('vmousedown','.block', function(){
            globalvars.ismousedown =true;
            $(this).addClass("active");
        });

        $('#puzzlecontainer').on('vmouseover','.block', function(){ 
            if(globalvars.ismousedown){
                $(this).addClass("active");
            }
        });

        $('#puzzlecontainer').on('vmouseup','.block', function(){ 
            globalvars.ismousedown = false;
        });

vmouseover 可在桌面浏览器上正常运行。但它不适用于我的Android手机和平板电脑。请帮忙。

2 个答案:

答案 0 :(得分:0)

触发一个函数来添加和删除要在mouseenter上触发的事件。鼠标停止时添加此事件,当鼠标停止时将其删除以停止突出显示...

$('#puzzlecontainer').on('mousedown','.block',startSelect);// Run when down
$('#puzzlecontainer').on('mouseup','.block',stopSelect);// Run when up

function startSelect(){
    $('#puzzlecontainer').on('mouseenter','.block',myHandler);//Add Handler on enter.
    // Fire the mouseenter event for the current element or it will not highlight.
    $(this).trigger('mouseenter');
}
function stopSelect(){
    $('#puzzlecontainer').off('mouseenter','.block',myHandler);//Remove Handler because mouseup.
}

答案 1 :(得分:0)

您可以在每个单元格上使用mouseover事件,并在myHandler中设置标记为true。检查它是否为真,然后将其视为mousedown事件

var ismosedown = false;

    $('#puzzlecontainer').on('mousedown','.block', function(){ ismosedown =true; } );
   $('allcells').mouseover(function(){
          if(ismosedown ){ // do works
           }
    }).mouseup(function(){
           ismosedown = false;
     });