Изменение фонового изображения при смене аккордеона - jQuery Ui - PullRequest
0 голосов
/ 15 марта 2010

Я использую этот код:

        $('.ui-accordion').bind('accordionchange', function(event, ui) {
            $(this).next().next().css({'background-image':'images/green-bg.jpg'});
        //ui.newHeader // jQuery object, activated header
  //ui.oldHeader // jQuery object, previous header
 // ui.newContent // jQuery object, activated content
 // ui.oldContent // jQuery object, previous content
});

Чтобы попробовать изменить фоновое изображение ПРЕДЫДУЩЕГО заголовка после его изменения.Я вижу, что документы jquery предоставляют объект для oldHeader, но я пытаюсь изменить CSS этого элемента.Есть идеи, как бы я это сделал?

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

1 Ответ

2 голосов
/ 15 марта 2010

У вас это есть. Это работает для меня:

  $('#div0').bind('accordionchange', function(event, ui) {
      addMessage("change");
      if (typeof ui.oldHeader != "undefined") {ui.oldHeader.css({'background': 'Pink'});}
      if (typeof ui.oldContent != "undefined") {  ui.oldContent.css({'background': 'White'}); }
      if (typeof ui.newHeader != "undefined") {ui.newHeader.css({'background': 'Yellow'}); }
      if (typeof ui.newContent != "undefined") { ui.newContent.css({'background': 'LightGreen'}); }
  });

Когда я открываю div, заголовок для открытого div получает желтый bg, а контент получает зеленый bg. Только что закрытый заголовок становится розовым. Вам нужно проверить на undefined, потому что при закрытии div и открытии другого newHeader / Content не определен. Аналогично, при открытии div, когда все ранее были закрыты, oldHeader / Content не определен.

рабочий пример: http://jsbin.com/arebi4/4

Я понял это, запустив страницу в отладчике (работает либо отладчик Firebug, либо IE8 F12) и взломав функцию accordionchange.

...