jQuery:live()に縛られたバインドイベント
質問
5つのリスト項目を備えた順序付けられていないリストがあり、それぞれにリンクがあります。
<ul> <li><a href="#">Link 1</a></li> <li><a href="#">Link 2</a></li> <li><a href="#">Link 3</a></li> <li><a href="#">Link 4</a></li> <li><a href="#">Link 5</a></li> </ul>
リンクにはクリック関数があります。 live()
:
$("a").live("click", function(){ ... });
この関数の内部はaです get
いくつかの情報を取得するようにリクエストします。
したがって、これらのリンクのいずれかがクリックされたら、いずれかのクリックを防ぎたい 他の 何でもすることからリンクします get
完全です。クリックイベントをバインドしていないことでこれを行うことができると思いました die()
:
$("a").live("click", function(){ $("a").not(this).die("click"); ... });
しかし、これはうまくいきません。エラーはありません - クリックイベントを妨げません。私は何が間違っているのですか?
解決
ここでの問題は、あなたが使用しようとしていることです live
と die
別の要素のセットで。正しく機能するには、適用する必要があります live
と die
同じセレクター /要素のセットに。
$('a').live('click', function () { ... });
$('a').die(); // Ok!
$('a').each(function () {
$(this).die(); // Doesn't work.
});
特定の操作が完了するまで、これを一時的に無効にしたいと思うようです。もしそうなら、あなたはハンドル /ンサンドルスイッチでこれを行うことができます。
(function() {
var doHandle = true;
$('a').live('click', function() {
if (!doHandle) {
return;
}
// Don't handle any events until the 'get' is complete
doHandle = false;
doGet(this, function() {
// Call back for when the get is complete. Start handling again
doHandle = true;
});
})();
所属していません StackOverflow