2011-11-08 10 views
0

私はブロックを使用してページをブロックし、いくつかの情報を取得しています:Blockuiはイベントを切断しています

メッセージdivには2つのボタンがあります。 OKとキャンセルをクリックします。

私は、ページの読み込みのクリックイベントを設定した場合:

$('#title-picker input[name=ok]').click(ok); 
$('#title-picker input[name=cancel]').click(cancel); 

をイベントが$ .blockUIを呼び出した後にトリガされていません。しかし、代わりに.liveメソッドを使用すると、意図したとおりに動作します。

$('#title-picker input[name=ok]').live('click',ok); 
$('#title-picker input[name=cancel]').live('click',cancel); 

私はそれを削除しを使用して、DOMにdiv要素を追加するメカニズムを想定し、これは、元のイベントハンドラをデタッチされたものでなければなりません。以前のバージョンのブロックを以前使用していましたが、これを行っていません。そして、私はドキュメンテーションで何も明らかに見ることができません。

私の推論は正しいですか?

また、.liveを使用することには欠点があります。つまり、私が上記のものに対してより良い回避策がありますか?あなたの代わりにライブ

$('#title-picker').delegate('input', 'click', function(){ 
    if (this.name == 'ok') { 
    ok(); 
    } else { 
    cancel(); 
    } 
//or even: 

    // window[this.name](); 

    //if needed use the scope where your functions are defined 
    //instead of the window element 
}); 

のデリゲートを使用することができます

おかげ

+1

'要素を作成し、 '.click'を使ってそれをクリックしようとすると、うまく動作しません。 – Val

答えて

0

p.s:ドキュメントでは、と述べられている:

BlockUIプラグインのバージョン2に変更されましたか?彼らは `.click`は、現在の要素を収集し、そしてので、もしあなたが将来的にそれらにイベントを添付してセレクタを、一致して、現在および将来の動的要素に割り当てられている.live`

Elements are no longer removed from the DOM when unblocking 
関連する問題