2012-04-26 1 views
0

Я много читал о круговых обертках в jcarousel, но не нашел этого конкретного. У меня есть jcarousel с круговой оберткой, и я хочу отобразить некоторую информацию о текущем слайде, когда пользователь наводит курсор на слайд и скрывает эту информацию, когда мышь отсутствует. Для этого я держу эту информацию под <li> элементами, обернутыми в <div class="description">.JCarousel с круговой оберткой и функцией live()/delegate(), объявленной на слайдах

$('#carousel').jcarousel(
    auto: 3, 
    wrap: 'circular', 
    scroll:1, 
    initCallback: mycarousel_initCallback, 
    size:5 
}); 

и связывают событие (я также попробовал вариант с live()) до <li> элемента (текущее и будущее, которое появляется в jcarousel, работающих в «круговой» обертке):

$('#carousel').delegate(
         'li', 
         'mouseover', 
         function(){ 
          $(this).find('.description').slideDown(); 
          return false; 
         } 
        ); 
       $('#carousel').delegate(
         'li', 
         'mouseout', 
         function() { 
          $(this).find('.description').slideUp(); 
          return false; 
         } 
        ); 

И это работает отлично, но в какой-то момент (полностью неопределенный для меня, это может быть первые секунды использования или даже минуты жесткого нажатия вперед/назад) при случайном показе слайдов перестает появляться. Я попытался отладить это и обнаружил, что события на этом сломанном слайде срабатывают, элементы dom с описанием существуют, но slideDown()/slideUp() просто ничего не делает. И эти слайды остаются сломанными до перезагрузки страницы.

По какой-то причине я не могу изменить перенос на другой, и я не могу изменить jQuery из 1.3 (или 1.4, я действительно не помню) в более новую версию. Есть идеи ?

ответ

0

Ну, длинный рассказ короткий: эта проблема связана с взаимодействием между jQuery анимацией и jCarousel. Когда слайд-шоу имеет круговую обертку, в какой-то момент начинайте создавать и удалять новые узлы, которые обозначают слайды. И удаление узла, когда анимация не закончена «зависает» fx queue jquery. Чтобы избежать этой проблемы, мне пришлось очистить эту очередь перед удалением слайда. Похоже, взломать, но ничего лучше не может быть сделано, как мне кажется.