2011-01-31 8 views
6

目指すのは、クリックしたときにすべてのリンクを無効にし、サーバーが無効にするコマンドと同じ方法で無効にするまで、すべてのリンクを無効にすることです。jQuery:div内のすべての機能を無効にする方法はありますか?まだすべてを見えるようにしますか?

したがって、すべてのリンクが1つのdivを含んでいるので、私はそれを一時的に無効にすることができます。

どうすればいいですか?

答えて

3

あなただけのデフォルトのリンクの動作を無効にしたい場合は、あなたがdelegateevent.preventDefaultの組み合わせを使用することができます。

$('#container').delegate('a', 'click', function(e) { 
    if (linksDisabled) { 
     e.preventDefault(); 
    } 
}); 

あなたが他にtrueまたはfalseに(親スコープで)linksDisabledを、その後を設定することができます適切なイベントハンドラ。

これらのリンクがJavascriptyのことをしている場合、それはやや難解です。おそらく、各イベントハンドラにif (linksDisabled)チェックを入れるのが最も簡単でしょう。

+0

は 'でpreventDefault()' 'の代わりにfalseを返すのを使用する利点はありますか;'? –

+2

@Lèsemajesté伝播を続行することができます。私は個人的にそれをより直感的に見つける。さらに、イベントハンドラの最後の部分だけでなく、いつでも呼び出すことができます。これはここでは関係ありませんが、私のコードは一貫しているのが好きです。 – lonesomeday

+0

それは良い点です。私はそれを考えなかった。 –

2

これを試してみてください:

$("#YOUR_DIV a").click(function(){ 
return false; 
}) 
+0

要素に他のイベントハンドラがある場合、他のイベントハンドラが他のイベントハンドラの後に実行される可能性があるため、まったく効果がありません。 – lonesomeday

+0

これは、JavaScriptリンクを無効にする良い方法です。ただし、このイベントハンドラが最初に起動されたことを確認する方法が必要です。 –

関連する問題