jquery: запуск публичного метода одного плагина после изменений из второго плагина

привет ... снова нужен совет :)

Я работаю над проектом с фильтруемым портфолио [на основе этой ссылки на плагин: www.gethifi.com/blog/a-jquery-plugin-to -создайте-интерактивное-фильтруемое-портфолио, подобное нашему .

элементы портфолио показаны в горизонтальном ползунке, который добавляет области прокрутки (горячие точки) с левой и правой стороны окна браузера.

вот и моя проблема:

ширина ползунка вычисляется в плагине smoothdivscroller www.smoothdivscroll.com . но когда я изменяю содержимое ползунка с помощью навигации по фильтрам, общая ширина ползунка изменяется, но плагин smoothdivscroller этого не замечает.

Я установил для вас упрощенный пример в jsfiddle, и вы можете увидеть всю проблему здесь kuemmel-schnur.de/projekte : когда отображаются все проекты (Alle) и вы прокручиваете вправо и затем переключаетесь на категорию «Lehrprojekte». Вы не увидите никаких проектов, потому что они находятся в крайней левой части, и общая ширина контейнера не пересчитывается.

Чтобы исправить это, у меня есть три идеи, в которых мне нужна серьезная помощь.

1) плагин smoothdivscroll предлагает общедоступный метод для пересчета ширины контейнера, например

$("#makeMeScrollable").smoothDivScroll("recalculateScrollableArea");

, который мне нужно запускать каждый раз после нажатия списка портфолио . и мне нужно объединить это с методом, при котором ползунок автоматически переключается на первый элемент текущего контента

$("#makeMeScrollable").smoothDivScroll("moveToElement", "first");

2) Моя вторая идея - потому что я не знаю, работает ли и как 1) - это проверить, работает ли url изменяется, а затем запускает пересчет. фильтр использует хеш для адресации содержимого. поэтому я подумал, что могу прочитать URL-адрес, и каждый раз, когда часть сразу после изменения хэша, я мог запустить метод.

3) Я мог бы связать фильтруемый плагин с плагином smoothDivScroll с помощью чего-то вроде (остерегайтесь совершенно неправильного кода :)

$('#portfolio-list').filterable();
 $('#portfolio-filter a').click(function(){
        $('#makeMeScrollable').smoothDivScroll("moveToElement", "first")("recalculateScrollableArea");
});

итак .. что вы думаете? снова ссылка jsfiddle: jsfiddle.net / tobiasmay / QudtF /

спасибо, tobi.

пс. Я бы правильно настроил ссылки, но мне нужно еще 1 очко репутации, чтобы опубликовать более 1 ссылки;)

8
задан Ender 18 November 2010 в 00:24
поделиться