2013-10-25 66 views
0

我知道,当用户按下鼠标按钮时会发生mousedown,当释放鼠标并点击鼠标当然发生两个事件mousedown和mouseup时会发生mouseup。我有三个不同的事件,每个处理这三个事件mouseup down并单击。我的问题是如何区分这三个,现在我的鼠标下来有一个计时器,所以我想在该计时器中添加一个布尔值,并在点击内测试它,我试过这个,它不符合我的标准。区分mouseup mousedown和点击

某些类别Mousedown-计时器检查然后,如果没有这些类的靶向元件中存在继续

Mouseup-清零定时器

点进打开一个模块

我可能还没有作出布尔型的全局变量,每个都可以读取或不可以,或者我完全缺少某些东西。这里是我的完整代码的示例快速代码

var isDown = false; 
ee[i].addEventListener('click',function(){ 
    if(isDown===false){ 
    openModule(); 
    } 
    },false); 

ee[i].addEventListener('mousedown',function(){ 
    var timer; 
    var $this = this; 
    timer = setTimeout(function(){ 
    if($this.className == "class"){ 
    isDown=true; 
    createActive(); 
    } 
    },500); 
},true); 

    ee[i].addEventListener('mouseup',function(){ 
    clearTimeout(timer); 
    },false); 

这只是一个简单的例子。我可能错过了一些编码,但我希望你能在上面的代码中发现我的偏见。任何人都知道区分这三个事件的好方法吗?

回答

1

我已经重写利用jQuery的代码......

var isDown = false; 
var timer; 

$('.class').mousedown(function(){ 
    isDown = false; 
    timer = setTimeout(function(){ 
     isDown = true; 
     //createActive(); 
      console.log('MOUSE DOWN'); 
    }, 500); 
}).mouseup(function(){ 
    if(isDown === false){ 
     //openModule(); 
      console.log('CLICK'); 
    }else{ 
      console.log('MOUSE UP'); 
    } 
    clearTimeout(timer);  
}); 

如果您只需添加的jQuery到您的网页,我的代码会自动依附任何元素在文档中使用的一类“类”的。

我已经注释掉了你的createActive();和openModule();调用以便您可以随时使用它(在运行时查看您的javascript控制台会显示脚本正在运行 - 当您完成播放时,请移除console.log()内容)。这段代码可以进一步优化,但它会给你一个总体思路。

您的计时器变量需要全局创建(我将其移出该函数)。

在这种情况下(声明一个mousedown时间障碍),click函数将变得无用,所以我将它简化为mouseup函数。

很高兴知道核心的JavaScript,但jQuery太简单而且功能强大,无法忽略。

+0

哈哈,我没有使用jQuery,所以为什么我没有写jQuery作为标签;)我也习惯使用jQuery很多,虽然在回顾了很多jQuery库之后,我可能不会使用它。在这里和那里都可以,知道Vanilla如何为我编写的代码实例化,比如20ms,而jQuery将会像1000ms一样只是一个数字,但仍然是一件很棒的事情。我看到你做了什么,所以我会把它改成香草,如果我把它做得很好,我会添加我是如何创建的。 – EasyBB

+0

是的,它会非常容易unjQuery它。只需改变“$('。class')。mousedown(”回到“ee [i] .addEventListener('mousedown',”并且对mouseup部分执行相同的基本操作,我写了一个无jQuery的问题,但遇到了一个问题(可能是因为我理解你的目标更好一些),并且不想再花时间计算出它。 jQuery在编码器上非常简单,虽然它的运行速度可能会缺乏(可以'确认或否认),只要你不使用大量复杂的代码来使用户系统死亡,结果就是值得的。 – JxAxMxIxN

+0

不,你是对的,代码是很长的,而不是使用jQuery,我决定使用JavaScript(香草),因为它是我的轻量级选项与jQuery相比,它不会吃用户系统,但用jQuery你会有做很多不必要的事情来完成代码的功能。特别是对于我鄙视lol的jQuery。我会标记你的答案是正确的,因为你是唯一的答案,并且它足够接近我去除了jQuery以外的地方;) – EasyBB

相关问题