JQuery UI对话框小部件多次打开

时间:2017-05-16 06:23:11

标签: javascript jquery

有一个问题具有相同的标题,但我的问题没有答案。 我在网站上实现了一个帮助器。现在,我有一个“开/关”-Button。每当我打开“on”时,一些HTML-Elements就会成为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 )) 

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:

取消绑定JQuery选择的事件,同时取消激活按钮。

$($this).off();