找出jQuery Accordion中的内容是否活跃于更改事件

时间:2010-12-16 18:40:01

标签: jquery jquery-ui jquery-ui-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();
    }
  });

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

好吧,从来没有得到任何回应,但如果有其他人遇到它,我找到了解决方案。 UI图标的可见性与另一个在扩展/折叠部分时垂直移动图标的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();
      }
    }
  });