Ajax-данные Colorbox - jScrollPane инициализируется в первый раз правильно, но после повторной инициализации .destroy не работает, пустое colorbox - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть несколько элементов, которые открывают colorbox с данными ajax (через ссылки ajax после разбивки на страницы ajax), а также отображают jScrollPane, если присутствуют полосы прокрутки.

$( '.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();
    }
});
});

Это работает так, как задумано, за исключением того, что оно работает только при первом вызове, каждый вызов после первого открывает модал colorbox, но в нем нет данных ... совершенно пусто!

Кажется, проблема в том, что после вызова jestrollPane .destroy повторная инициализация не работает должным образом. Я не получаю ошибок в firebug, и после целого дня, пытаясь решить проблему и искать в Интернете, без решения, единственное, что продолжает появляться, это ширина и высота элемента прокрутки после его повторной инициализации, но я не понял что-нибудь из этого.

Любая помощь?

EDIT

Я сейчас обрабатываю запрос ajax и помещаю содержимое во встроенный элемент colorbox, проблема, с которой я сталкиваюсь, заключается в том, что после 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 Ответ

1 голос
/ 29 февраля 2012

Вы не должны назначать colorbox для $ (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, но вы, вероятно, могли бы вместо этого назначить jScrollPane для #cboxLoadedContent, который уничтожается при каждой загрузке нового содержимого в colorbox.Затем вы можете удалить очистку, которую вы делаете для нее в обратном вызове onClosed.

...