2017-05-16 6 views
0

同じタイトルの質問がありますが、私の問題には答えがありませんでした。 私はウェブサイト上にヘルパーを実装しています。今、私は「オン/オフ」ボタンを持っています。私が "on"をオンにするたびに、HTML要素の中にはjquery UIウィジェットへのリンクとなるものがあります。JQuery UIダイアログウィジェットが複数回開きます

問題は:毎回、「オン」をクリックすると、クリックイベントのオープニングウィジェットの数のカウンターがあるようです。

私はこれを解決する方法がわかりません。 他に誰かができますか?おかげさまで

(function ($, bc, opc) { 

    var counter=0; 
// On-Click function: 
$.fn.opcuaHelp = function () { 

     counter= counter+1; 

     return this.each(function () { 
      $(this).attr("data-opcua-help-enabled", "true"); 



      var $this = $(this); 
      var $that = $(this); 


      $this.css({"color":"#2196F3"}) 

      if ($this.hover()){$($this).hover(function() { 
      $(this).css({"display":"block","transform-origin":"100% 0%","animation":"fadeIn 0.3s ease-in-out"}) 
      });} 

      var helptext = "" ; 


      getHelpText("ns=1;g=562e2ba3-38f6-491e-8331-008492f2ae68") 
       .then(function(result) { 

        helptext = result; 

        var $hoverhelper = $("<span class='hoverhelper'></span>"); 
        $hoverhelper.append(helptext); 

        $this.append($hoverhelper); 

      }) ; 



      $this.click(function klicken () { 

      $this.css({"color":"#0000FF"}) 



      getHelpText("ns=1;g=562e2ba3-38f6-491e-8331-008492f2ae68") 
       .then(function(result) { 

        helptext = result; 

        var $helper = $("<span class='helpwidget'></span>");  
        $helper.append(helptext); 

      var $dialog = dialog; 
       $dialog.empty();  

       $('span[class^="hoverhelper"]').remove(); 
        $helper.dialog({title: $that.text(), buttons: { "1": { id: 'close', text: 'Close', click: function(){ $(this).dialog("close"); }, "class": "orange" }, 
        }}); 



      } 

      }) ; 



      }); 

     }); 

    } ; 

//Off-click function: 

$.fn.opcuaHelp1 = function () { 

    return this.each(function () { 

    $(this).attr("data-opcua-help-enabled", "false"); 

    // $("#helpid").remove(); 
    $("[data-opcua-help-enabled]").css({"color":"black"}); 
    $('span[class^="hoverhelper"]').remove(); 

    $(this).removeAttr("display"); 
    $(this).removeAttr("transform-origin"); 
    $(this).removeAttr("animation"); 



    })    



} 

} (jQuery, $BC, opcua)) 

答えて

0

私は解決策が見つかりました:ボタンを無効にしながら、

だけで、jQueryの - 選択したイベントのバインドを解除。

$($this).off();