jQuery工具:如何打开/关闭accordio部分?
这是我的问题 我使用jQuery工具构建了一个功能完美的手风琴。很容易相处 客户端回来说,现在accordion必须是可折叠的,这不在原始规范中。不幸的是,jQuery工具accordion没有内置此功能,所以我一直在编写自己的代码 我已经接近了,但没有什么是100%有效的。我在这里创建了一个JSFIDLE代码: 折叠代码工作正常jQuery工具:如何打开/关闭accordio部分?,jquery,css,accordion,jquery-tools,Jquery,Css,Accordion,Jquery Tools,这是我的问题 我使用jQuery工具构建了一个功能完美的手风琴。很容易相处 客户端回来说,现在accordion必须是可折叠的,这不在原始规范中。不幸的是,jQuery工具accordion没有内置此功能,所以我一直在编写自己的代码 我已经接近了,但没有什么是100%有效的。我在这里创建了一个JSFIDLE代码: 折叠代码工作正常 // Code to collapse accordions $("#accordion > h2").click(function(){ if (this.c
// 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);
第二个块试图绕过jquerytoolsapi,并且可以工作,但是在打开时我得到了一个双重动画,我假设这与jquerytools的功能冲突
$(this).parent().children("h2").removeClass("current");
$(this).parent().children("div").slideUp("slow");
$(this).toggleClass("current");
$(this).next("div").slideToggle("slow");
如果有人能指出我做错了什么,那将是一个巨大的帮助
谢谢
编辑:
仔细想想,第一块“重新打开”代码不起作用是有道理的。因为我只是从打开的accordion中删除类,所以实际上我并没有告诉jQuery工具它已经关闭了。所以,据jQuery工具所知,当我点击它重新打开它时,accordion已经打开了,不需要再次打开。我想我需要找到一种方法来告诉jQuery工具手风琴已经关闭,并且代码可以工作。我找到了这段代码:我应用了这个jQuery插件,并且能够成功地让它工作。感谢所有可能调查过此事的人 在我搜索“重新单击关闭jQuerytools选项卡”时,我一直在查找此帖子。jQuerytools已经更新了其核心代码,尽管上面的代码适用于以前的版本,但我已经编写了一个名为“closeOnClick”的新密码,以匹配jQueryUI的样式
$el.tabs(
".envs div.panes",
{
tabs: "h3",
effect: 'slide',
collapse: false,
closeOnClick: true,
initialIndex: null
}
);
Tabs.js代码是直接从jQuerytools的github中提取出来的它在我这方面非常有效。手风琴工作正常。它可以正确折叠,但如果您单击同一个按钮重新打开,它将不起任何作用。见我的编辑上面。谢谢