Выясните, активен ли контент в jQuery Accordion при изменении события - PullRequest
0 голосов
/ 16 декабря 2010

Итак, у меня есть аккордеон jQuery, и в области контента я создал несколько псевдо-флажков, используя изображения. Это прекрасно работает во всех браузерах, кроме IE 6/7 (который, к сожалению, я должен поддерживать). Что происходит, когда я закрываю / открываю раздел, флажки появляются до того, как содержимое полностью открывается с помощью анимации. Один из вариантов - отключить анимацию для IE, но я бы предпочел этого не делать. Вместо этого я надеялся, что есть способ показать / скрыть флажки через функцию изменения / изменения старта. Однако, похоже, для этого мне нужно выяснить в функции changetart, собирается ли контент расширяться или собирается развалиться. Если он рушится, мне нужно будет скрыть флажки до начала анимации. Аналогично, в функции изменения (выполняемой по завершении) мне нужно будет увидеть, был ли контент открыт или закрыт. Если он был открыт, то мы хотим показать флажки внутри него. Вот что я сейчас пытаюсь, но все, что он может сделать, это скрыть это, и это всегда так, так что я думаю, что базироваться на классе .ui-accordion-content-active не получится: *

$("#filter_accordion").accordion({
    header: "> div > h3",
    autoHeight: false,
    collapsible: true,
    active: false,
    change: function(event, ui) {
      if (ui.newContent.hasClass(".ui-accordion-content-active")) ui.newContent.find(".checkbox").show();
    },
    changestart: function(event, ui) {
      if (!(ui.newContent.hasClass(".ui-accordion-content-active"))) ui.newContent.find(".checkbox").hide();
    }
  });

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 17 декабря 2010

Ну, я так и не получил ответа на этот вопрос, но на случай, если кто-нибудь еще столкнется с ним, я нашел решение.Видимость иконки пользовательского интерфейса связана с другой ошибкой IE, связанной со смещением иконок по вертикали при развертывании / свертывании разделов.ie67 - это просто логический набор в моем шаблоне, описывающий, используем ли мы один из этих браузеров (IE 6/7), на случай, если это не очевидно.

$("#filter_accordion").accordion({
    header: "> div > h3",
    autoHeight: false,
    collapsible: true,
    active: false,
    changestart: function(event, ui) {
      if (ie67) {
        $("#filter_accordion .ui-icon").css("visibility", "hidden");
        ui.oldContent.find(".checkbox").hide();
        if (ui.newContent.is(":visible")) ui.newContent.find(".checkbox").hide();
      }
    },
    change: function(event, ui) {
      if (ie67) {
        $("#filter_accordion .ui-icon").css("visibility", "visible");
        if (ui.newContent.is(":visible")) ui.newContent.find(".checkbox").show();
      }
    }
  });
...