質問

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");
    ...
});

しかし、これはうまくいきません。エラーはありません - クリックイベントを妨げません。私は何が間違っているのですか?

役に立ちましたか?

解決

ここでの問題は、あなたが使用しようとしていることです livedie 別の要素のセットで。正しく機能するには、適用する必要があります livedie 同じセレクター /要素のセットに。

$('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; 
    });
})();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top