2017-06-14 4 views
1

私はPHP(demo.php)とJavaScriptファイル(demo.js)の両方を持っています。私は、サーバー上に作成してオブジェクト化し、そのキーを返し、それを使ってパスを作成し、それにURLを作成する関数を持っています。ただし、一度にアクティブにできるURLは1つだけなので、これは一度だけ発生することが重要です。しかし、それは何度も起こっており、しばしば退職したリンクに私を送ります。作成された最後のリンクは常に機能しますが、このエラーによって生成されたリンクを探す必要はありません。アンバインダーを使用してもjQueryが複数回トリガするのを防ぐにはどうすればよいですか?

私のPHP(demo.phpは)非常に次のようになります。

<div id="svg_graph"> 
    // just a graph (code is irrelevant) 
</div> 

<div id="prompt"> 
     <a id="startup" class="button"> Create New Object </a> 
</div> 

そして、私のJSは、次のようになります。.unbind()が作業をSTILなければならないのに、あなたは、.off()を使用する必要があります

function funcA(){ 
     $("#svg_graph").mousedown(function(){ 
      $(this).mousemove(function(e){ 
       // irrelevant code 
      }); 
     }); 

     $("#svg_graph").mouseup(function(){ 
      // $("a#startup").bind("click",function(){ // doesn't work either 
      $("a#startup").click(function(){ 
       // Supposed to prevent multiple clicks, but doesn't 
       $("a#startup").unbind("click"); 
       funcB(); 
      }); 
      $(this).unbind("mousemove"); 
     }); 
} 

// This function is being called more than once but I don't know why 
function funcB(data){ 
     var obj = createObj(data); 
     var url = "some predefined url" + obj.key; 
     window.location.replace(url); 
) 

答えて

0

このごろ。

バインド解除が実際に問題がある場合は、とのより良い運を持っているかもしれません:

$("#svg_graph").off('mouseup').on('mouseup', function() { 
    $("a#startup").off('click').on('click', function() { 
     funcB(); 
     return false; // probably 
    }); 
}); 
関連する問題