2011-08-05 85 views
0

我對JS事件有點麻煩。我有一個鏈接,調用onclick事件,在彈出的模式窗口 - facebox中打開一張照片。1次點擊後禁用onclick()

當連接到該鏈接的圖像文件名被傳遞給模態窗口的鏈接,用戶點擊單,但是如果用戶雙擊該圖像文件中的模態窗口打開的兩倍。

我已經嘗試了一個簡單的ondblclick =「」和ondblclick =「return false」來阻止這個,但它似乎仍然將瀏覽器解釋爲2個單獨的onclick()事件。

任何人都可以提出一個修補程序或解決方案,由此該鏈接的第1點擊後暫時禁止?

這裏是下面的代碼調用事件:提前

韋恩

+0

如何檢查是否打開窗口? Onclick事件是同步的,所以窗口對象應該在第二次點擊時出現。 –

+0

爲什麼模態窗口的背景不能阻止[http://defunkt.io/facebox/](this)頁面上所有示例中的第二次點擊? –

+0

有趣的是,我會怎麼做? – Wayne

回答

2

看到jQuery的解除綁定

<a href="javascript:void(0);" onmouseover="setVisibility(\'deletephotodiv'.$do.'\', \'block\');" onmouseout="setVisibility(\'deletephotodiv'.$do.'\', \'none\');" ondblclick="parent.jQuery.facebox({ ajax: \'profile/previewphoto.inc.php?photo=',$_SESSION['images'][$do]['name'],'&album=',$_SESSION['images'][$do]['albumname'],'\' }); "> 

感謝。 http://api.jquery.com/unbind/

或使用布爾變量從您的函數返回。 第一次點擊時將其設置爲True,在下次單擊時,該函數將返回,因爲該變量將被設置爲true。 如

var firstDone = false; 
function myClickHandler() 
{ 
    if(firstDone === true) 
     return; 
    /* here is some work */ 
    alert(123); 
    firstDone = true ; 
} 
+1

實際上並未提及jQuery。但是,即使使用jQuery,這也太複雜了。 – jAndy

+0

但這會使鏈接無法點擊,這不是他想要的。他希望鏈接永遠是可點擊的,但當模態窗口處於活動狀態時不會。 –

+1

@jAndy:「parent.jQuery.facebox」? – pyvi

0

如果您正在使用jQuery,你也可以考慮http://api.jquery.com/one/而當你在使用jQuery,請避免編寫代碼一樣onmouseover,使用jQuery充分和事件綁定到超鏈接並提供了一些超鏈接HREF代替javascript:void(0);