Отключите аккордеонную анимацию Jquery UI только во время загрузки страницы - PullRequest
1 голос
/ 07 апреля 2010

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

По сути, у меня есть несколько форм внутри разделов аккордеона, и после отправки страница перезагружается и соответствующий раздел перезагружается. Но во время перезагрузки запускается анимация, которая выглядит немного некрасиво. Но мне нравится, когда страница не загружается.

Как мне добиться этого эффекта?

Ответы [ 2 ]

3 голосов
/ 07 апреля 2010

Чтобы ответить на мой собственный вопрос. Сработало следующее.

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

После того, как это сделано, установите анимированную настройку на слайд, и все это оттуда.

 $(function(){
      /* Create the accordion object first */
      $("#accordion").accordion({ animated: false, header: "h3", autoHeight: false, clearstyle: true, collapsible: true })

      /* get the section to load. This is set by the previous form submission and saved to a session variable. */ 
      var id = <?php echo $sectionId; ?>;

      /* activate on sectionId=0 causes it to close (which is by design) this gets around it */
      if (id != 0) {
        $("#accordion").accordion("activate", id);
      }

      $("#accordion").accordion("option", {animated: "slide" });

    });
0 голосов
/ 07 апреля 2010

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

В JS при загрузке страницы делай

var = false; //false = no open tabs
$( ".selector" ).accordion( { ..., active: var } );

При отправке сделайте PHP, если вы его используете, выполните:

$my_tab_number = n;
var = <php echo $my_tab_number; ?>;

Таким образом, когда страница будет перезагружена, она будет открыта на нужной вкладке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...