1

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

顺便说一句,我没有使用那个人的插件,而是尝试自己开发。

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

$('#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 手机和平板电脑。请帮忙。

4

2 回答 2

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.
}
于 2012-10-09T09:49:19.640 回答
0

您可以mouseover在每个单元格上使用事件并在myHandler. 检查它是否为真,然后将其视为mousedown事件

var ismosedown = false;

    $('#puzzlecontainer').on('mousedown','.block', function(){ ismosedown =true; } );
   $('allcells').mouseover(function(){
          if(ismosedown ){ // do works
           }
    }).mouseup(function(){
           ismosedown = false;
     });
于 2012-10-09T09:50:05.140 回答