如何禁用/删除/取消绑定jQuery Overlay?

时间:2011-03-11 15:03:50

标签: jquery overlay jquery-tools unbind

我在触发器上创建了一个jQuery Tool的Overlay:

$('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');

从按钮中移除所有点击处理程序(包括Overlay load()功能),但我不认为这是一种干净的方法如果我有其他点击处理程序,我想维护。

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

实现这一目标的恰当之处是什么?

3 个答案:

答案 0 :(得分:2)

回答我自己的问题:

  

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

这很好用,看起来很干净。不需要解除绑定。

我想我应该在发布之前尝试过 - 然后再说一次,也许这将有助于未来的其他人;)

答案 1 :(得分:0)

我没有在jQuery Tools文档中找到任何关于解除绑定/销毁叠加层的引用。

但为什么不使用第二个按钮作为警报链接并只是切换2个按钮的显示?这样你就不必对绑定做任何事了。

答案 2 :(得分:0)

要停用重叠式链接,我会在触发链接中添加一个类overlay-disabled

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

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

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