Узнайте, активен ли контент в jQuery Accordion при изменении события

Итак, у меня есть аккордеон jQuery, и в областях контента я создал несколько псевдо-флажков с использованием изображений. Это прекрасно работает во всех браузерах, кроме IE 6/7 (который, к сожалению, мне приходится поддерживать). Что происходит, когда я переключаю закрытие/открытие раздела, флажки появляются до того, как содержимое будет полностью открыто с помощью анимации. Один из вариантов — отключить анимацию для IE, но я бы предпочел этого не делать. Вместо этого я надеялся, что есть способ показать/скрыть флажки с помощью функции change/changestart. Однако, похоже, для этого мне нужно выяснить в функции changestart, собирается ли содержимое расширяться или вот-вот рухнет. Если он рушится, мне нужно будет скрыть флажки до того, как начнется анимация. Точно так же в функции изменения (та, которая выполняется после завершения) мне нужно будет увидеть, было ли содержимое открыто или закрыто. Если он был открыт, то мы хотим показать флажки внутри него. Вот что я сейчас пытаюсь сделать, но все, что он может сделать, это скрыть это, и это всегда так, поэтому я думаю, что основывать его на классе .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();
    }
  });

Любая помощь приветствуется!


person David Savage    schedule 16.12.2010    source источник


Ответы (1)


Ну, я никогда не получал ответов на это, но на случай, если кто-то еще столкнется с этим, я нашел решение. Видимость значка пользовательского интерфейса связана с другой ошибкой 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();
      }
    }
  });
person David Savage    schedule 17.12.2010