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()関数を含む)を削除しますが、特に維持したい他のクリックハンドラーがある場合、これはクリーンな方法ではないと思います。

たぶん、オーバーレイのonBeforeLoadハンドラーでフラグを使用して、フラグが設定されている場合はfalseを返すことができますか?

これを達成するための適切なものは何ですか?

4

3 に答える 3

2

私自身の質問に答える:

オーバーレイのonBeforeLoadハンドラでフラグを使用し、フラグが設定されている場合は false を返すことができますか?

これはうまく機能し、きれいに見えます。バインド解除は必要ありません。

投稿する前に試してみるべきだったと思います-もう一度、これは将来他の人に役立つかもしれません;)

于 2011-03-11T15:23:41.053 に答える
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 に答える
0

jQuery ツールのドキュメントで、オーバーレイのバインド解除/破棄に関する参照が見つかりませんでした。

しかし、アラート リンクに 2 つ目のボタンを使用して、2 つのボタンの表示を単純に切り替えてみませんか? そうすれば、バインディングについて何もする必要はありません。

于 2011-03-11T15:13:54.227 に答える