Рекомендуется ли создавать подключаемый модуль jQuery с сохранением состояния? Если да, то как мне это сделать?

#javascript #jquery #jquery-plugins

#javascript #jquery — запрос #jquery-плагины #jquery #jquery-plugins

Вопрос:

Давайте предположим, что у нас есть подключаемый модуль jQuery pager. Так что я был бы в состоянии сделать это:

 $("pager-div").pager({ page: 1, rowsPerPage: 30, count: 1780 });
  

ОК. Теперь я хочу переместить пейджер на следующую страницу. Здесь у меня есть два варианта:

1) Мой плагин $.pager не возвращает jQuery. Он возвращает объект, у которого есть вызываемый метод nextPage , так что я мог бы сделать что-то вроде этого:

 var pager = $("pager-div").pager({ page: 1, rowsPerPage: 30, count: 1780 });
pager.nextPage();
  

2) Мой плагин возвращает jQuery. Так будет лучше, если он сохранит цепочечность. Так что я мог бы сделать что-то вроде этого:

 $("pager-div").pager({ page: 1, rowsPerPage: 30, count: 1780 });
$("pager-div").nextPage();
  

Здесь два вопроса:

  1. Мне кажется, что подход 2 лучше, поскольку он поддерживает цепную связь, и у меня не было бы необходимости сохранять ссылку на пейджер. Я мог бы получить к нему доступ в любом месте, используя функцию $. Вопрос в том, должен ли я использовать подход 2?
  2. Если ответ из (1) верен, как мне его реализовать? То есть, как мне поддерживать состояние в jQuery?

Комментарии:

1. вы бы не поддерживали состояние в самом jQuery как таковом, вы могли бы использовать технологию браузера для хранения информации: cookies, localStorage и т.д.

2. вы можете сохранить свои переменные состояния в объекте data() объекта jQuery object. Если это то, что вы имели в виду?

Ответ №1:

Я голосую за вариант 2. Вы можете хранить свои переменные, управляемые в поле данных jQuery.

пример:

 $(selector).data("option", {page: 1});
alert($.data("option").page);