我在触发器上创建了一个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?
实现这一目标的恰当之处是什么?
答案 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;
// ...
}