Javascript 防止在图像地图区域上双击

Javascript 防止在图像地图区域上双击,javascript,jquery,html,double-click,Javascript,Jquery,Html,Double Click,我有一个基本图像映射,当单击区域时,它会执行javascript/jquery例程。此时,如果双击该区域,DoStuff()方法将执行两次。有人能提供一种方法来防止双击场景中的重复执行吗 <img src="images/myimage.png" border="0" usemap="#Map1" /> <map name="Map1"> <area coords="5,115,97,150" href="javascript:void(0);" oncli

我有一个基本图像映射,当单击区域时,它会执行javascript/jquery例程。此时,如果双击该区域,
DoStuff()
方法将执行两次。有人能提供一种方法来防止双击场景中的重复执行吗

<img src="images/myimage.png" border="0" usemap="#Map1" />
<map name="Map1">
    <area coords="5,115,97,150" href="javascript:void(0);" onclick="DoStuff()">
    <area coords="104,116,199,149" href="javascript:void(0);" onclick="DoStuff()">
</map>

如果您使用的是jQuery,则可以在单击处理程序的顶部包含此内容。单击时,它将禁用阻止任何单击事件发生的元素

function DoStuff() {
    $('[name="Map1"]').prop('disabled', true);
    //Do Stuff..
}

根据您的jQuery版本解释一些其他选项。

如果您使用的是jQuery,则可以在单击处理程序的顶部包含此选项。单击时,它将禁用阻止任何单击事件发生的元素

function DoStuff() {
    $('[name="Map1"]').prop('disabled', true);
    //Do Stuff..
}
根据jQuery版本说明一些其他选项。

使用布尔标志

var hasBeenClicked = false;

// Your code...

if(!hasBeenClicked){
    hasBeenClicked = true;

    // My routine

    setTimeout(function(){ // McPhelpsius's idea (wait for 1sec before we can click again)
        hasBeenClicked = false; // My routine is over, we can click again
    }, 1000);
 } else {
    // do nothing 
 }
使用布尔标志

var hasBeenClicked = false;

// Your code...

if(!hasBeenClicked){
    hasBeenClicked = true;

    // My routine

    setTimeout(function(){ // McPhelpsius's idea (wait for 1sec before we can click again)
        hasBeenClicked = false; // My routine is over, we can click again
    }, 1000);
 } else {
    // do nothing 
 }

一个非常基本的暴力方法是在DoStuff()中添加一个计时器/间隔,并检查是否经过了适当的时间量,然后才允许它再次运行。一个非常基本的暴力方法是在DoStuff()中添加一个计时器/间隔并检查是否经过了适当的时间,然后才允许它再次运行。setTimeout(1000)如何?这可能有助于在可单击的时间之间添加整整一秒。编辑。谢谢你的建议关于设置超时(1000)是什么?这可能有助于在可单击的时间之间添加整整一秒。编辑。谢谢你的想法,我试过了,但这并不能阻止双重执行。。。我正在用这个方法调用window.open,我总是打开两个窗口。只是尝试了一下,它并不能阻止双重执行。。。我用这个方法调用window.open,我总是打开两个窗口。