jCarousel, не оттягиваемый в скрытом отделении

Я использую отделение, чтобы заполнить список ул./лития и затем вытянуть jCarousel из него. Таким образом, это хорошо работает:

$('#mycarousel').jcarousel();

Вот проблема:

Отделение, содержащее объекты ул./лития, могло быть скрыто щелчком другой кнопки. Когда отделение скрыто, и я изменяю размер окна браузера, jCarousel также пытается перерисовать себя, но так как оно скрыто, оно не может потянуть его правильно. Результат состоит в том, что все смешано в списке (если я нажимаю кнопку снова для создания его видимым). Но снова если я изменяю размер окна теперь (смешанный jCarousel не скрыт теперь), это перерисовывает себя правильно.

Я пытался хватать jCarousel экземпляра, и перезагрузите себя, как только кнопка нажата для создания отделения видимым (способ, которым это изменяет размер себя, когда это видимо, и окно изменено).

Для получения jCarousel я использую:

JQuery('#mycarousel').data('jcarousel') 

и это возвращается как пустой указатель.

Как я могу заставить jCarousel тянуть правильно?

6
задан KatieK 1 July 2011 в 18:35
поделиться

2 ответа

Немного больше отладки и обнаружено, что когда браузер изменяет размер (и карусель уже видна), его функция перезагрузки вызывается для корректировки его положения, поэтому, чтобы помочь себе в сценарии скрытия / показа div, я в конечном итоге вызвал карусель Функция перезагрузки api после того, как обертывающий div станет видимым.

немного усилий было на самом деле получить экземпляр jcarousel. так что это был двухэтапный процесс ...

  1. получить экземпляр карусели.

      var cInstance = null; 
    cInitCallback = function (c) 
    cInstance = c; 
    }; 
     
     $ ('# mycarousel '). jcarousel ({
    initCallback: cInitCallback, 
     
    }); 
     
  2. перезагрузите карусель на показе div

      cInstance .reload (); 
     
3
ответ дан 10 December 2019 в 02:44
поделиться

Почему вы предполагаете, что $ () Вызов .jcarousel () делает что-нибудь с .data () ? В любом случае лучше придерживаться API, предоставляемого плагином, чем гадать, как он работает под капотом. В любом случае, отвечу на ваш вопрос ...

Проблема в том, что когда div скрыт, он не имеет высоты или ширины. Используйте метод «off-left» вместо того, чтобы скрывать div, например:

#mycarousel {
    height: 100px; /* whatever height your div will have when shown */
    width: 100px;  /* whatever width your div will have when shown */
    position: absolute:
    left: -10000px;
}

Если вы хотите его показать, используйте $ ('# mycarousel'). Css ('position', 'static') , чтобы удалить абсолютное позиционирование, и div переместится на место.

Подробнее здесь .

6
ответ дан 10 December 2019 в 02:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: