2012-02-29 16 views
0

ajaxデータでcolorboxを開き(ajaxページネーション後にajaxリンクを介して)、スクロールバーがあればjScrollPaneをレンダリングする要素が複数あります。Colorbox ajax data - jScrollPaneは最初に正しく初期化されますが、.destroyの再初期化が機能しない場合、空のカラーボックス

$('.showcolorBox').live('click',function(e){ 
e.preventDefault(); 
$(this).colorbox({open:true, 
    opacity:0.98, 
    maxHeight: '95%', 
    onComplete: function() { 
    $('#cboxContent').jScrollPane({ 
     showArrows: false 
    }); 
    }, 
    onClosed: function() { 
    var ele = $('#cboxContent').jScrollPane({showArrows: false}); 
    var api = ele.data('jsp'); 
    api.destroy(); 
    } 
}); 
}); 

このことは非常に最初の呼び出しの作品を除いて意図したとおり、最初の後の各呼び出しはカラーボックスのモーダルを開きますが、その中にデータのない...完全に空白作品!

jScrollPaneの.destroy呼び出しの後で問題が発生したようですが、再初期化が正しく機能していないようです。私は火かき棒に何の誤りもなく、問題を解決してウェブを検索しようとしている一日を過ごした後、何も解決しないまま、スクロール要素の幅と高さを再初期化したが、そこから何か。

助けが必要ですか?私は今、AJAXリクエスト私の自己を処理し、カラーボックスのインライン要素のコンテンツを配置しています

EDIT

、私が午前問題は何もスクロールバーがcolorbox.resize後に追加されませんされているのですか?

$('.show_btn').live('click',function(e){ 
e.preventDefault(); 
$.colorbox({ 
    opacity:0.90, 
    maxHeight: '95%', 
    fixed:true, 
    transition:"fade", 
    overlayClose:false, 
    returnFocus: true, 
    inline:true, 
    href:"#bytePad", 
    width: "655px", 
    height: "0px", 
    onLoad: function() { 
     $('#cboxSpinner').show(); 
     $('#cboxSpinner').ajaxComplete(function(event,request, settings) { 
     $(this).hide(); 
     $(this).colorbox.resize("#bytepad"); 
     }); 
    } 
}); 
}); 

答えて

1

クリックするたびに$(this)に割り当てるべきではありません。最初のクリック後、クリックされるたびにカラーボックスが割り当てられ、再び自動的に開きます。代わりにこれを試してみてください:

$('.showcolorBox').live('click',function(e){ 
e.preventDefault(); 
$.colorbox({ 
    href:this.href, 
    opacity:0.98, 
    maxHeight: '95%', 
    onComplete: function() { 
    $('#cboxContent').jScrollPane({ 
     showArrows: false 
    }); 
    }, 
    onClosed: function() { 
    var ele = $('#cboxContent').jScrollPane({showArrows: false}); 
    var api = ele.data('jsp'); 
    api.destroy(); 
    } 
}); 
}); 

私は前にJScrollPaneを使用していないが、あなたはおそらくあなたがカラーボックスに新しいコンテンツをロードするたびに破壊され、代わりに#cboxLoadedContentにするJScrollPaneを割り当てることができます。その後、onClosedコールバックでそれに対して行うクリーンアップを削除することができます。

+0

ありがとうございました。最初の問題につきましたが、いくつか変更して以来私が抱えている新しい問題を手伝ってくれるかどうか疑問に思いましたか? :あなたのAJAXリクエストを作成し、返されたHTMLを取り、HTMLプロパティにデータを渡し、再びカラーボックスを呼び出す次に ' ; – Darcbar

+0

私はあなたが空のカラーボックス ' $の.colorboxを()を開くことができると思います(編集を参照してください) '$ .colorbox({html:data})' – Jack

+0

'$ .colorbox({html:data}'はインライン要素のhtmlを設定でレンダリングするのではなくなりますか? – Darcbar

関連する問題