используя jquery live для обновления полосы прокрутки - PullRequest
0 голосов
/ 16 июня 2011

Я работаю над веб-страницей, которая использует элементы Div для аккордеона, чтобы расширять и сокращать содержимое каждого заголовка.Я также использую пользовательскую полосу прокрутки, которая должна обновляться всякий раз, когда происходит событие расширения или контракта.Пока что решение, которое я придумал, заключается в использовании jquery live, как показано ниже:

jQuery ('# accordion_sp1_id139'). Live ('click', function () {myScrollBar.update ();});

Так что, в основном, я говорю ему обновлять полосу прокрутки всякий раз, когда происходит событие щелчка в главном div аккордеона.

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

Вот страница с проблемой: https://www.arrowandbranch.com/media/press полоса прокрутки, которую я использую, является плагином jquery, взятым из http://www.baijs.nl/tinyscrollbar/

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Я думаю, что здесь происходит ваше событие click для вашего Accordion контейнера, запускаемого непосредственно после события click, чтобы запустить анимацию аккордеона, но до того, как контейнер будет расширен.Вам нужно будет настроить вызов myScrollBar.update() после завершения анимации Accordion, о чем говорится в документации для MooTools Docs - Fx / Fx.Accordion (хотя она не очень выделяется)сначала)

в вашем скрипте Accordion добавьте параметр onComplete: для запуска обновления полосы прокрутки ...

var myAccordion139 = new Accordion(document.getElements('#accordion_sp1_id139 .toggler'), document.getElements('#accordion_sp1_id139 .sp-accordion-inner'), {
    opacity: true,
            display:-1,
            alwaysHide: true,       
    onActive: function(toggler){
        toggler.addClass('active');
    },
    onBackground: function(toggler){
        toggler.removeClass('active');
    },
    onComplete: function(toggler) {
        myScrollBar.update();
    }
});
1 голос
/ 16 июня 2011

Простым решением было бы обновить полосу прокрутки в обработчике для события открытия аккордеона.Если посмотреть на ваш код, то вы должны сделать javascript на странице "press" следующим образом:

    onActive: function(toggler){
      toggler.addClass('active');
      myScrollBar.update();
    },

Я предполагаю, что это будет работать, предполагая, что переменная myScrollBar находится в области действия этогофункция.

...