jQuery - обновить начальные параметры функции через переменную, которая изменяется в зависимости от активности пользователя? - PullRequest
0 голосов
/ 20 апреля 2011

Я не понимаю, как обновить исходные параметры функции после их установки.

Я использую плагин с именем serialScroll .Плагин прокручивает элементы, указанные в начальной настройке $ (elem) .serialScroll ({// ...}).

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

Все, что я хочу сделать, - это заставить serialScroll ({)} обновить его "item: _"в соответствии с этой переменной.

Вот код serialScroll:

    var nextClass = ".fig4"; 

    // this is being changed to .figN depending on the users 
    // scrolling position in the browser/viewport (successfully). 
    // For proof of communication purposes I forced nextClass 
    // here to equal .fig4 to see if the two are at lest talking to 
    // each other, which they are... but now how do i update "items:" 
    // below to reflect the change in the "nextClass" variable?

$('html').serialScroll({
    target:'body',
    items: nextClass, 
    next:'#nextImage',
    axis:'y',
    duration:700,
    force:true, 
});

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

Объекты JavaScript являются динамическими, и вы всегда можете добавить к ним методы. Поскольку serialScroll - это набор функций, динамически добавляемых к вызываемому элементу, есть два способа выполнить то, что вам нужно:

  1. Добавьте установщик к коду плагина - это заставит его работать во всех установках
  2. monkey-patch для каждого экземпляра serialScroll после инициализации

Если у вас есть только один экземпляр, последний проще и должен оказаться более совместимым с форвардом:

$('html').serialScroll({...});
$('html').serialScroll.setItems = function(i){
  items = i;
}
// when nextClass changes
$('html').serialScroll.setItems(nextClass);

Чтобы выполнить первый вариант, вам нужно взломать сам код serialScroll.

1 голос
/ 20 апреля 2011

В данном случае происходит то, что при инициализации .serialScroll он получает значение nextClass один раз, и это значение используется.

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

...