2013-10-02 168 views
0

我有一個基本圖像地圖執行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> 
+0

一個非常基本的和暴力的方法是隻內DoStuff(添加定時器/間隔),並檢查是否適當的時間量已經過去了,你想允許它再次運行前。 – DigTheDoug

回答

3

使用布爾標誌。

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 
} 
+0

setTimeout(1000)呢?這可能對於在可點擊的時間之間添加一秒鐘是有用的。 – McPhelpsius

+0

已編輯。感謝這個想法 – Oliboy50

1

如果您使用的是jQuery,您可以將其包含在點擊處理程序的頂部。點擊它將禁用停止發生任何點擊事件的元素。

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

This解釋了一些其他選項,具體取決於您的jQuery版本。

+0

只是試了一下,它並沒有阻止雙重執行......我在這個方法中調用window.open,並且總是打開兩個窗口。 – JoeGeeky