jQuery手风琴单击一次单击时展开/折叠
我从这里下载了我的手风琴:我的老板告诉我,他希望在用户点击每个标题时打开和关闭该功能 例如,当您单击一个标题时,它将打开;当您单击另一个标题时,它也将打开,但之前打开的标题将不会关闭,除非再次单击该标题 我可以通过更改以下代码来实现这一点:jQuery手风琴单击一次单击时展开/折叠,jquery,accordion,double-click,Jquery,Accordion,Double Click,我从这里下载了我的手风琴:我的老板告诉我,他希望在用户点击每个标题时打开和关闭该功能 例如,当您单击一个标题时,它将打开;当您单击另一个标题时,它也将打开,但之前打开的标题将不会关闭,除非再次单击该标题 我可以通过更改以下代码来实现这一点: animateClose: function (elem, opts) { 为此: animateClose: function (elem) { 现在的问题是,标题需要单击一次而不是两次。有没有办法解决这个问题 这是完整的代码:
animateClose: function (elem, opts) {
为此:
animateClose: function (elem) {
现在的问题是,标题需要单击一次而不是两次。有没有办法解决这个问题
这是完整的代码:
<script type="text/javascript">
$(document).ready(function() {
//syntax highlighter
hljs.tabReplace = ' ';
hljs.initHighlightingOnLoad();
//accordion
$('h3.accordion').accordion({
defaultOpen: 'section1',
cookieName: 'accordion_nav',
speed: 'slow',
animateOpen: function (elem, opts) { //replace the standard slideUp with custom function
elem.next().slideFadeToggle(opts.speed);
},
animateClose: function (elem) { //replace the standard slideDown with custom function
elem.next().slideFadeToggle(opts.speed);
}
});
$('h3.accordion2').accordion({
defaultOpen: 'sample-1',
cookieName: 'accordion2_nav',
speed: 'slow',
cssClose: 'accordion2-close', //class you want to assign to a closed accordion header
cssOpen: 'accordion2-open',
});
//custom animation for open/close
$.fn.slideFadeToggle = function(speed, easing, callback) {
return this.animate({opacity: 'toggle', height: 'toggle'}, speed, easing, callback);
};
});
</script>
$(文档).ready(函数(){
//语法荧光笔
hljs.tabReplace='';
hljs.initHighlightingOnLoad();
//手风琴
$('h3.手风琴')。手风琴({
defaultOpen:'section1',
cookieName:“手风琴导航”,
速度:“慢”,
animateOpen:function(elem,opts){//用自定义函数替换标准的slideUp
elem.next().slideFadeToggle(选择速度);
},
animateClose:function(elem){//用自定义函数替换标准的slideDown
elem.next().slideFadeToggle(选择速度);
}
});
$('h3.手风琴2')。手风琴({
defaultOpen:'sample-1',
cookieName:“手风琴2号导航”,
速度:“慢”,
cssClose:'accordion2 close',//要分配给关闭的accordion头的类
cssOpen:“手风琴2打开”,
});
//用于打开/关闭的自定义动画
$.fn.slideFadeToggle=函数(速度、缓和、回调){
返回这个。设置动画({opacity:'toggle',height:'toggle'},速度,缓和,回调);
};
});
HTML:
如果通读源文件-
jquery.accordion.js
,您将看到以下代码:
//opens a accordion panel
function open($this, opts) {
close(opts);
//give the proper class to the linked element
$this.removeClass(opts.cssClose).addClass(opts.cssOpen);
//open the element
opts.animateOpen($this, opts);
//do cookies if plugin available
if (useCookies(opts)) {
// split the cookieOpen string by ","
id = $this.attr('id');
setCookie(id, opts);
}
}
如您所见,此函数所做的第一件事是-
close(opts);
即关闭所有打开的标题。我想如果你评论这一行,你会得到你所需要的。请同时发布你的相关标记。供参考对于此类问题,您可以使用在线工具,如从jQuery UI accordion提交有问题的代码:注意:如果你想同时打开多个部分,不要使用手风琴。手风琴不允许同时打开多个内容面板,这需要付出很多努力。如果您正在寻找允许打开多个内容面板的小部件,请不要使用此小部件。“。在那一页上有一个例子,说明了如何在几行代码中进行多个扩展面板。我尝试过这样做,但没有什么不同。我仍然需要双击。这很完美,但如果我希望它最初关闭,我需要写什么呢?@JoshuaWaheed只需将第二行替换为这一行:
$accordioio.next('div').hide()
它将隐藏所有div
,而不是索引。如果你想打开一个特定的文件,你可以这样做:accordioio.next('div').hide().eq(2).show()代码>这将在默认情况下打开第三部分,而隐藏所有其他部分。非常感谢。它正以我需要的方式完美地工作。嗨,我添加了一个名为“关闭”的文本,因为我需要手风琴在单击它时关闭,就像单击标题时关闭一样。有办法吗?@JoshuaWaheed我不想猜你把按钮放在哪里了。请更简洁地提问,并请准备/或/更新我们的演示,以便我可以看一看
//opens a accordion panel
function open($this, opts) {
close(opts);
//give the proper class to the linked element
$this.removeClass(opts.cssClose).addClass(opts.cssOpen);
//open the element
opts.animateOpen($this, opts);
//do cookies if plugin available
if (useCookies(opts)) {
// split the cookieOpen string by ","
id = $this.attr('id');
setCookie(id, opts);
}
}
close(opts);