2017-06-14 101 views
1

我有一個PHP(demo.php)和JavaScript文件(demo.js)。我有一個函數應該創建並通過服務器對象,返回它的關鍵,使用它來創建它的路徑,然後創建一個URL。但是,一次只能有一個URL處於活動狀態,所以重要的是隻發生一次。但是,這種情況多次發生,並且經常發送給我一個退休的鏈接。創建的最後一個鏈接始終有效,但我想阻止必須查找由此錯誤生成的鏈接。即使使用unbinders,我如何防止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是這樣的:

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

這些天來,你應該使用.off(),雖然.unbind()應該STIL工作。

如果解除綁定確實是問題,那麼你可能有更好的運氣:

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