即使使用unbinders,如何防止jQuery多次触发?

时间:2017-06-14 22:02:33

标签: javascript php jquery html

我有PHP(demo.php)和JavaScript文件(demo.js)。我有一个函数应该在服务器上创建和对象,返回它的密钥,使用它来创建它的路径,然后创建一个URL。但是,一次只能激活一个URL,因此重要的是这只发生一次。但是,它发生了多次,并经常发送给我一个退休的链接。创建的最后一个链接始终有效,但我想防止必须查找此错误生成的链接。

我的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);
 )

1 个答案:

答案 0 :(得分:0)

现在,您应该使用.off(),但.unbind()应该工作。

如果确实是解除绑定问题,那么你可能会更幸运:

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