jCarousel - обновлять элементы карусели без обновления страницы

Я использую плагин jCarousel для небольшой страницы галереи с параметром itemloadcallback для динамической загрузки элементов в карусели.

Однако я не уверен, возможно ли это, но есть ли способ, с помощью которого экземпляр карусели на самой странице можно удалить и воссоздать с новым набором элементов? Я планирую использовать фильтр (поле выбора) на странице, при изменении которого я хотел бы создать новую карусель с отфильтрованным списком. Есть идеи, знатоки?

Спасибо заранее.

Za


person zarun    schedule 17.05.2011    source источник


Ответы (2)


Мне удалось поработать над этим позже в тот же день, но последние несколько дней я был слишком занят, чтобы опубликовать решение, к которому я пришел. Я использовал ту же функцию addItemCallback, которая требуется для динамической загрузки элементов, но для другого события, которое привязано к событию onChange фильтра года. Что ж, вот он, и я надеюсь, что он может помочь другим, пытающимся реализовать то же самое:

функция mycarousel_initCallback (карусель) {

  jQuery('#filter_year').live('change', function() {
    jQuery.get(
        'dynamic_ajax_php.php',
        {
            first: carousel.first,
            last: carousel.last+1,
            year:""+$(this).val()+""
        },
        function(xml) { 
            mycarousel_itemAddCallback(carousel, carousel.first, carousel.last, xml);
        },
        'xml'
    );
}); 

}

Ответ прозвучал бы слишком конкретно для вопроса (ну, вопрос тоже был слишком конкретным), но я хотел показать, как можно отслеживать события от элементов за пределами карусели и использовать их для управления каруселью.

Ваше здоровье!

person zarun    schedule 23.05.2011

Почему бы вам не поместить jCarousel в div с определенным идентификатором (хотя, вероятно, вы так и делаете). Вам нужен только ajax для загрузки нового контента. Если вызов ajax прошел успешно, вы можете добавить (или, скорее, просто использовать функцию jquerys html()) необходимую структуру и вызвать jCarousel для этого div.

person sharoni    schedule 17.05.2011
comment
Шарони — вот что я имею в виду — вызвать jCarousel для содержимого в div. Хотя мой контент в div будет состоять из базовой структуры, которую вызывает jCarousel, второй вызов jCarousel, предназначенный для реализации содержимого div, — это то, что я м не удается достичь на данный момент. Спасибо. - person zarun; 17.05.2011
comment
что, если вы вернете уже сгенерированную jcarousel через вызов ajax? - person sharoni; 17.05.2011
comment
Шарони - во-первых, как вы имеете в виду уже сгенерированную jcarousel через ajax? Знаете ли вы, что jCarousel является плагином javascript и, как и любая другая функция js, применима только к элементам, сгенерированным/выведенным в браузер (т. е. элементам на стороне клиента)? Если вы имеете в виду репликацию структуры ‹ul› - ‹li›, которую jCarousel создает для существующего списка, и возврат через ajax, то это не поможет и никогда не поможет, потому что jcarousel или, по сути, любая другая библиотека jquery должна применяются к элементу, который уже существует в DOM. Спасибо за попытку помочь, но .. хм .. (вздох) - person zarun; 17.05.2011