2011-08-05 18 views
0

JSイベントに少し問題があります。私はポップアップモーダルウィンドウ - faceboxで写真を開くonclickイベントを呼び出すリンクを持っています。クリック1回後にonclick()を無効にする

ユーザーがリンクをクリックすると、そのリンクに添付されているイメージファイル名がモーダルウィンドウに渡されますが、ユーザーがダブルクリックするとイメージファイルがモーダルウィンドウで2回開きます。

これを止めるには単純なondblclick = ""とondblclick = "return false"を試しましたが、ブラウザはまだ2つのonclick()イベントとして解釈しているようです。

誰でも、最初のクリック後にリンクが一時的に無効になるような修正プログラムや解決策を提案できますか?事前に

<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'],'\' }); "> 

おかげ

ウェイン

+0

ウィンドウが開いているかどうかを確認するのはどうですか? Onclickイベントは同期的なので、2回目のクリックでウィンドウオブジェクトがそこにあるはずです。 –

+0

[http://defunkt.io/facebox/](html)]ページのすべての例のように、モーダルウィンドウの背景が2番目のクリックを妨げないのはなぜですか? –

+0

興味深い、どうすればいい? – Wayne

答えて

2

はjQueryのバインド解除を参照してください。ここでは

は、以下のコードがイベントを呼び出しています 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の代わりにhrefを入力してくださいjavascript:void(0);

関連する問題