Emm*_*mma 9 javascript jquery click touch-event touchmove
我正在构建一些主要用于平板电脑的东西,用户可以点击屏幕上的项目并应用它.这是我到目前为止:
问题:
我尝试过很多东西,但都没有.我尝试过的最简单的(失败的)是这样的:
var dragging = false;
$(".items").on("touchmove", function(){
dragging = true;
});
$('.items').on("click touchend", function(event){
if (dragging = true){
}
else{
$('.items').removeClass('selected');
$(this).addClass('selected');
}
});
Run Code Online (Sandbox Code Playgroud)
Jon*_*han 22
我认为这是一种更安全的方式
将变量设置为false
var dragging = false;
Run Code Online (Sandbox Code Playgroud)
将var设置为true ontouchmove(允许您在应用程序的任何位置重复使用此代码)
$("body").on("touchmove", function(){
dragging = true;
});
Run Code Online (Sandbox Code Playgroud)
你的按钮
$("#button").on("touchend", function(){
if (dragging)
return;
// your button action code
});
Run Code Online (Sandbox Code Playgroud)
重置变量(重要)
$("body").on("touchstart", function(){
dragging = false;
});
Run Code Online (Sandbox Code Playgroud)
您想要使用以下任一项:
if(dragging == true)
Run Code Online (Sandbox Code Playgroud)
或者,简单地说:
if(dragging)
Run Code Online (Sandbox Code Playgroud)
=
在设置值时,您应该只使用单个符号,而==
在检查值时应使用两个符号.因此,您的代码应如下所示:
$('.items').on("click touchend", function(event){
if(!dragging)
{
$('.items').removeClass('selected');
$(this).addClass('selected');
}
});
Run Code Online (Sandbox Code Playgroud)
请注意,dragging == true
在这种情况下,您不需要检查是否因为您没有运行任何代码.相反,你可以简单地检查是否dragging == false
,!dragging