2012-04-13 14 views
0

私はモーダルダイアログボックスを作成しています。まず、bodyタグにiframeを追加して、オーバーレイとして機能させます。モーダルiframeをクリックしてダイアログを閉じますか?

<div class="modal-screen"> 
    <iframe src="javascript:false;"></iframe> 
</div> 

次に、ダイアログボックスをbodyに追加します。

<div class="dialog"> 
    <!-- various dialog related elements 
</div> 

ここで、ユーザーがオーバーレイをクリックすると、ダイアログを閉じます。問題は、オーバーレイに関連するイベントにバインドできないように見えることです。基本的に私のダイアログビューは、オーバーレイが用意されてinitialize方法を持って、私のJSを要約すると

:私はそれを必要とするとき

initialize: function() { 
    this.modal = $('<div class="modal-screen"><iframe src="javascript:false;"></iframe></div>') 

    this.modal.on('click', function(e) { 
    // this event never seems to fire 
    console.log("hello"); 
    } 
} 

それから私は、ページにレンダリングします。私は、オーバーレイをクリックすると、私はhelloを見ることはありません。..

render: function() { 
    $('body').append(this.modal); 
    // append other dialog content 
    this 
} 

答えて

0

ここにiframeを使用する理由はありません。単にoverlay divを作成し、それをクリックすると削除してください。

+0

私は[プログレッシブエンハンスメントでデザインする](http://filamentgroup.com/dwpe/)で、iframeを使うのが一番良いと読んでいます。しかし、あなたが提案する解決策はうまくいくように見えるので、私はそれ以上に良い理由がなくなるまで、ちょっとしたことをします。 –

0

this.modalではなく、それはあなたがそれに何かをバインドすることができない理由であるDOMオブジェクトである、単一の要素ではありません。代わりに$( '。modal-screen'、this.modal)をバインドしてみてください。

+0

'this.modal.find( '。modal-screen')'へのバインディングは、あなたが言っているものと同じでなければなりません、正しいですか?私は 'iframe'以外の' this.modal'で何かを見つけることができません。ロギング 'this.modal.find( '*')'は私にiframe要素を与えます。私はそれにイベントをバインドするように見えることはできませんし、私はそれの要素のいずれかをつかむことができないようです。 –

関連する問題