我正在尝试在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手机和平板电脑。请帮忙。
答案 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;
});