Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Внутреннее состояние плагина (https://javascript.ru/forum/jquery/8498-vnutrennee-sostoyanie-plagina.html)

alexander2 29.03.2010 19:38

Внутреннее состояние плагина
 
Доброе время суток! Заранее извиняюсь, если подобная тема уже поднималась здесь.

При выполнении плагина мне нужно хранить текущее состояние объекта (к примеру, положение ползунка или текущий кадр-слайдшоу).
Внутри плагина используются некоторые функции.

Если плагин применяется к нескольким элементам, то при вызове этих внутренних функций, я не имею доступа к внутренним свойствам текущего объекта. И приходится передавать их отдельно входным параметром как объект (ключ->значение).

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

Если необходимо, могу приложить пример.

subzey 29.03.2010 23:00

Увы, "родных" средств для этого нет.

alexander2 29.03.2010 23:10

Какие есть не "родные" средства jQuery?

В этом отношении мне очень нравится Mootools с его объекто-ориентированностью...

subzey 29.03.2010 23:42

В отношении плагина у браузеров отношение примерно следующее: «я тебе отдаю кусок экрана, 300×200 пикселей, выделяю память и позволяю кое-что, но не всё».
Если Вам нужно дать ссылку, скажем, на кадр слайдшоу на флеше, Вам придется об это озаботиться особо.
Например, каждый переход по такому слайдшоу должен вызывать переход на урл с решеткой, а потом при загрузке страницы текст после решетки в урле («хэш») должен передаваться обратно галерее. Почти наверняка, исполнение такого метода взаимодействия лежит за пределами этого форума.

alexander2 30.03.2010 00:14

Это понятно, но я не об этом спрашиваю
http://demo.vkurseweba.ru/jquery/carousel/vertical.html
к примеру тут я писал скрипт карусели.

В теле плагина есть функция scrollingTo(), которая использует параметр position.
Если карусель на странице одна - все ок, иначе параметр position общий для всех плагинов.

Чтобы избежать этого приходилось передавать его входым параметром в функцию scrollingTo()

subzey 30.03.2010 01:01

Ч-черт, я опять не посмотрел, в каком разделе нахожусь.
Прошу прощения, я говорил про плагины браузерные. :(

x-yuri 30.03.2010 03:44

ну можно писать widget'ы (jquery ui), хотя тоже та еще "архитектура". Да и меняется она от версии к версии. Хотя понятно, в общем-то, это ж внутренняя штука

а вообще чего ты хотел? У тебя же по сути функция, а не класс (объект). При таком подходе можно выбрать основной элемент, в котором будет храниться информация, и у которого все ее будут спрашивать

p.s. а разве там position один на всех получается?

Цитата:

Сообщение от alexander2
В этом отношении мне очень нравится Mootools с его объекто-ориентированностью...

:yes:

alexander2 30.03.2010 23:02

Используется position последнего элемента к которому применяется плагин. То есть в моем примере, крутиться будет последний элемент, даже если нажимать на элементы управления других.

Я не удивляюсь что оно работает не так как мне хочется.

Цитата:

Сообщение от x-yuri (Сообщение 49494)
При таком подходе можно выбрать основной элемент, в котором будет храниться информация, и у которого все ее будут спрашивать

Имеешь в виду, хранить параметр как атрибут элемента?

x-yuri 31.03.2010 09:24

тогда может дело в понимании замыканий?

alexander2 01.04.2010 11:30

Спасибо за ссылку. Но в любом случае мне придется передавать каждую нужную переменную отдельно, чтоб использовалась она вместо той что сохранилось после всех вызовов.
И если у меня их к примеру 5 то это не очень удобно.


Часовой пояс GMT +3, время: 19:12.