jQuery工具:如何打开/关闭手风琴部分?

时间:2012-03-22 22:23:43

标签: jquery css accordion jquery-tools

这是我的问题。

我使用jQuery Tools构建了一个功能完善的手风琴。非常容易使用。

客户回来说,现在手风琴必须是可折叠的,这不符合原始规范。不幸的是,jQuery Tools手风琴没有内置的这个功能,所以我一直在研究我自己的代码。

我已经接近了,但100%无效。我在这里创建了一个代码的JSFiddle:http://jsfiddle.net/4ubZs/15/

崩溃代码正常工作。

// Code to collapse accordions
$("#accordion > h2").click(function(){
if (this.className == "current") {
    $(this).removeClass("current");
    $(this).next("div").slideToggle("slow");
} else {

重新开放是一个问题。我尝试了两种不同的解决方案来重新打开。第一个代码块正在尝试使用Tools API。它不会重新打开最近关闭的选项卡,但是如果我用.click()调用中的实际索引号替换“current_tab”,它将起作用,但如果我尝试以编程方式获取索引则不行。

var api = $("#accordion").data("tabs");
var current_tab = api.getIndex(this);
api.click(current_tab);

第二个块试图绕过jQuery Tools API,并且可以工作,但是在打开时我得到了一个双动画,我假设它与jQuery Tools功能有冲突。

$(this).parent().children("h2").removeClass("current");
$(this).parent().children("div").slideUp("slow");
$(this).toggleClass("current");
$(this).next("div").slideToggle("slow");

如果有人能够指出我做错了什么,那将是一个巨大的帮助。

谢谢!

编辑: 考虑到这一点,第一块“重新打开”代码不起作用是有道理的。因为我只是从开放式手风琴中删除类,我实际上并没有告诉jQuery Tools它已被关闭。因此,当我点击它重新打开它时,就jQuery Tools而言,手风琴已经打开,不需要再次打开。我想我需要想办法告诉jQuery Tools手风琴是关闭的,并且代码可以工作。

2 个答案:

答案 0 :(得分:1)

在我搜索"关闭jQuerytools选项卡时重新点击"我一直在找这个帖子。 jQuerytools更新了它的核心代码,即使上面的代码适用于以前的版本,我也写了一个名为" closeOnClick"以匹配jQuery UI的风格。

        $el.tabs(
        ".envs div.panes",
        {
            tabs: "h3",
            effect: 'slide',
            collapse: false,
            closeOnClick: true,
            initialIndex: null
        }
    );

https://jsfiddle.net/googabeast/co8nxm8y/

Tabs.js代码是直接从jQuerytools的github中提取的

答案 1 :(得分:0)

我找到了这段代码:http://pastie.org/1421642/wrap我应用了这个jquery插件,并且能够成功运行它。感谢任何可能已经调查过的人!