2011-01-19 5 views
0
<script type="text/javascript"> 
$(document).ready(function() { 
    $('#mardicion').each(function() { 
     var $link = $(this); 


     $link.click(function() { 
      var $dialog = $('<div></div>') 
       .load($link.attr('href') + ' #content') 
       .dialog({ 
        autoOpen: false, 
        title: $link.attr('title'), 
        width: (pageWidth()*0.9), 
        height: (pageHeight()*0.9) 
       }); 
       $dialog.dialog('open'); 

       return false; 
     }); 
    }); 
}); 
</script> 

すでに開いてjQueryのUIのダイアログ内のクリックしたリンクを維持ダイアログ内ではなく、ブラウザウィンドウでクリックされたリンクが開きます。私はクリックハンドラを使ってこれを行う適切な方法だと聞いたことがありますが(ダイアログがダイアログ内で開きます)、jQuery UI Dialogで実装する方法がわかりません。jQueryのUIのダイアログは - 私は、ダイアログ内の別のリンクをクリックしたときに、私は私がリンクをクリックすると、ページが正しくロード、ページをロードするために、上記のJavaScriptを使用しますが、

ありがとうございます!

+0

あなたは少しhtmlコードを追加できますか? –

+0

ここにあります:Open in Dialog RinoFM

答えて

2

live()機能を使用する必要があります。特定の時間(私はページの読み込みになると思います)で、ID番号mardicionの特定の数のアイテムにクリックイベントハンドラをアタッチします。ページがダイアログに読み込まれると、そのページ内のリンクは、madicion IDを持つ可能性がありますが、そのクリックイベントは接続されません。

$('#madicion').live('click' , function(e) {})を使用すると、後でページに追加された場合でも、すべてのアイテムのクリックイベントをキャッチできます。サイドノートとして

  1. あなたはID属性を悪用されているように思えます。 IDごとに1つの要素しか持つことはできません。 $('#XXX').each()を見ると、2つ以上のアイテムがあることがわかります。これらの要素を処理する正しい方法は、これらの要素にCSSクラスを与えることです。$('.XXX').each();
  2. eachを使用する必要はありません。$('#XXX').click(function() { })は、それぞれの要素に前述の機能を適用します。
+0

私はロードしているページの中でlive()関数を扱うか、使用するはずですか?この場合(質問の私のコメントを参照) 'page3.html'?ありがとう! – RinoFM

+0

既存のページの一部としてページを読み込むため、いいえ。したがって、既存のページのDOMに追加されます。 – Gidon

+0

完璧で、観測に感謝します。 – RinoFM

関連する問題