2011-10-10 12 views
6

私はすでにsimliarタイトルで質問しましたが、うまくいきません。 (例:How to load AJAX content into current Colorbox window?jQueryのカラーボックスの内容を変更

私はメインページを持っている:

<script type="text/javascript" src="js/jquery.colorbox.js"></script> 
<link rel="stylesheet" type="text/css" href="css/colorbox.css" /> 
<script> 
jQuery(function(){ 
    $("#aLink").colorbox(); 
    $('#blub a[rel="open_ajax"]').live('click', function(e){ 
     e.preventDefault(); 
     var url = $(this).attr('href'); 
     $.ajax({ 
      type: 'GET', 
      url: url, 
      dataType: 'html', 
      cache: false, 
      beforeSend: function() { 
       //$('#cboxContent').empty(); 
       $('#cboxLoadedContent').empty(); 
       $('#cboxLoadingGraphic').show(); 
      }, 
      complete: function() { 
       $('#cboxLoadingGraphic').hide(); 
      }, 
      success: function(data) { 
       $('#cboxLoadedContent').append(data); 

      } 
     }); 
    }); 
    }); 
</script> 
<a href="1.html" id="aLink">colorbox open</a> 

これはうまく動作しますが、1.htmlの(簡単な)コンテンツがカラーボックスにロードされている(jQueryの1.6.1を含みます):

1.html:

<div id="blub"> 
    <a rel="open_ajax" href="2.html">Change Content</a> 
</div> 

は、今私がリンクをklickingにより内容を変更したいです。これは機能しません。 Ether追加のカラーボックスが表示される、または何も起こりません。

Thanx!

+0

colorboxが開くと(1.htmlの内容で)、2.htmlへのリンクがあることを意味しますか?だから、基本的に、あなたは、カラーボックスの内容を変更するには、カラーボックス内のリンクをしたい..それは正しいですか? – Donamite

+0

1.htmlの内容がカラーボックスにロードされます。リンク「Change Content」がそこにあります。私はリンクをクリックします...今は2.htmlの内容が既存のカラーボックスにロードされるようにします – saromba

答えて

5

jquery live()関数を使用して、既存および今後のカラーボックスリンクのクリックを監視することができます。また、セレクタとしてrelを使用しないことをお勧めします。その属性はSEOでの使用を意図しています。したがって、この例では、私はクラス属性にrel属性から、あなたのセレクタを移動した:

$(document).ready(function() { 
    $('a.open_ajax').live('click', function(){ 
     $.colorbox({ 
      open:true, 
      href: this.href 
      //plus any other interesting options  
     }); 

     return false; 
    }); 
}); 

それからちょうどあなたが新しいカラーボックスのコンテンツをトリガーにしたいものは「open_ajax」クラスとのhrefを持っていることを確認してください。 EG:

<a class="open_ajax" href="colorboxPage.html">Open</a>

のjQuery 1.7以降の更新

(ライブ以来jQueryの1.7、)の場合は、あなたがこのようにそれを行う必要があります、廃止されました:

$(document).on("click", "a.open_ajax", function() { 
    //everything that was in the live() callback above 
}); 
+0

こんにちは、これは動作しません。 2.htmlの内容は2番目のカラーボックス(最初のものの後ろ)にあります。 – saromba

+0

はい、そうです。私は完全なコードで更新します。新しいカラーボックスを開くことはできませんが、コンテンツをロードしてから既存のカラーボックスのサイズを変更します。 – Donamite

+0

ありがとう。これは機能します。 – saromba

関連する問題