如何在事件处理程序中停止函数

时间:2015-09-24 09:54:22

标签: javascript

我想隐藏jsPanel窗口,而不是在点击[X]图标时删除DOM。

jsPanel支持jspanelbeforeclose事件。

我的想法

  1. 观察jspanelbeforeclose事件并停止进一步操作。
  2. 点击jsPanel的[x]图标时,会触发jspanelbeforeclose事件。
  3. 我认为如果第1步停止,则不会执行第2步功能panel.remove()

    我的问题是如何正确停止1? (或者如何防止执行panel.remove()

    我已经测试过以下方法,但都不起作用。

      

    e.stopPropagation();

         

    e.preventDefault();

         

    返回false;

    jsPanel代码段

    // closes a jsPanel and removes it from the DOM
    close: function (panel) {
        ...
        panel.trigger('jspanelbeforeclose', panelID);
    
        ...
        // remove the jsPanel itself
        panel.remove();
    
        ...
    });
    

    我的代码

    $('body').on('jspanelbeforeclose', function(event, id) {
    // HOW TO DO
    });
    

1 个答案:

答案 0 :(得分:1)

我建议一个更容易的方法。如果你想让关闭按钮隐藏面板而不是关闭它,为什么不把另一个处理程序分配给这个面板的关闭按钮,如

var myPanel = $.jsPanel({
  // your panel config ...
  callback: function (panel) {
    // in the callback get the close button
    $('.jsPanel-btn-close', panel)
    // remove the standard handler
    .off()
    // and assign one that hides the panel
    .on('click', function(){
      panel.hide();
    });
  }
});

无论何时需要面板,只需致电

myPanel.show();