1

我在触发器上创建了一个 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');

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

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

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

4

3 回答 3

2

回答我自己的问题:

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

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

我想我应该在发布之前尝试过——再说一次,也许这会在未来帮助其他人;)

于 2011-03-11T15:23:41.053 回答
0

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

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

于 2011-03-11T15:13:54.227 回答
0

为了停用覆盖链接,我overlay-disabled向触发器链接添加了一个类:

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

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

onBeforeLoad: function() {
    if (this.getTrigger().hasClass('overlay-disabled')) return false;
    // ...
}
于 2011-11-09T12:35:35.990 回答