【问题标题】:How to disable / remove / unbind a jQuery Overlay?如何禁用/删除/取消绑定 jQuery 覆盖?
【发布时间】:2011-03-11 15:03:49
【问题描述】:

我在触发器上创建了一个 jQuery 工具的叠加层:

$('button').overlay(
{
 ... 
});

我以后如何禁用和重新启用覆盖?我希望我的$('button') 元素保留为链接,但我不想在点击时显示叠加层,而是要显示警报?

类似的东西:

if( needToDisableOverlay() )
{
   $('button').overlay().disable(); // no such thing...
   $('button').bind( 'click.alert', function()
   {
      alert( 'The overlay has been disabled' );    
   });
}
// later on
if( needToEnableOverlay() )
{
    $('button').unbind( 'click.alert' );
    $('button').overlay().enable(); // no such thing...
}

我知道我可以使用

$('button').unbind('click');

从按钮中删除 all 点击处理程序(包括 Overlay load() 函数),但我认为这不是一种干净的方式,尤其是如果我有其他想要维护的点击处理程序。

也许我可以在 Overlay 的 onBeforeLoad 处理程序中使用标志,如果设置了标志则返回 false ?

实现这一目标的正确方法是什么?

【问题讨论】:

    标签: jquery overlay jquery-tools unbind


    【解决方案1】:

    回答我自己的问题:

    也许我可以在 Overlay 的 onBeforeLoad 处理程序中使用标志,如果设置了标志则返回 false ?

    这很好用,而且看起来很干净。无需解绑。

    我想我应该在发帖之前尝试一下 -- 再说一次,也许这会在未来对其他人有所帮助;)

    【讨论】:

      【解决方案2】:

      我在 jQuery 工具文档中没有找到任何关于取消绑定/销毁覆盖的参考。

      但是您为什么不为警报链接使用第二个按钮并简单地切换两个按钮的显示?这样您就不必对绑定做任何事情。

      【讨论】:

      • 没错,我没有想过这个。我喜欢它。
      【解决方案3】:

      要停用覆盖链接,我将overlay-disabled 类添加到触发器链接:

      $('#overlay-button').addClass('overlay-disabled');
      

      onBeforeLoad 处理程序中,我检查了这个类的触发元素:

      onBeforeLoad: function() {
          if (this.getTrigger().hasClass('overlay-disabled')) return false;
          // ...
      }
      

      【讨论】:

        猜你喜欢
        • 2015-09-21
        • 2022-01-07
        • 1970-01-01
        • 2012-10-24
        • 2011-11-15
        • 1970-01-01
        • 1970-01-01
        • 2015-01-30
        • 2017-11-07
        相关资源
        最近更新 更多