当前位置: 首页 > 知识库问答 >
问题:

使用链接或按钮切换整个手风琴功能

施洛城
2023-03-14

我有一架手风琴很好用。我在想办法搜索手风琴的所有襟翼:

使用jQuery手风琴时在页面(Ctrl+F)上查找字符串

我已经在一个链接上使用了destroy方法,然后在另一个链接上重新初始化,但它将是伟大的切换这个与一个按钮。((我本来在这里问这个问题没有这个解决方案,所以下面的答案就是这样,看有没有更好的解决方案出来,我才会接受))

$(document).ready(function() {
    $("#hide").click(function() {
        $(".accordion").accordion("destroy");
    });

    $("#show").click(function() {
        $(".accordion").accordion({
            navigation  : true,
            collapsible : true,
            heightStyle : "fill",
            active      : 
        });
    });
});

我还能够用jQuerytoggle()切换整个手风琴,但这只会使整个东西消失。我想要的是切换手风琴功能,同时保留div结构,使其可见,就像有人在浏览器中禁用JavaScript一样。

所以上面的类型符合我的要求,但实际上,更好的解决方案是删除类.accordion,因为这会使页面看起来像它应该做的那样。破坏手风琴实际上破坏了一些东西,这是不可取的。

我以为这会很容易,但它不起作用:

$(document).ready(function() {
    $("#hide").click(function() {
        $("#accordion").removeClass(".accordion");
    });

    $("#show").click(function() {
        $("#accordion").addClass(".accordion");
    });
});

这似乎是添加和移除我告诉它的类,但最初的移除并不是为了移除手风琴本身而移除accordion类。

共有2个答案

邬英武
2023-03-14

销毁和重新装载是一个非常简单的解决方案。“一个按钮”方面可以通过document ready函数中的事件解决:

// event to destroy accordion and make it's content searchable
$("#open-1").on("click",function() {

    // if the button says Enable reload to bring the accordion back
    if ($(this).html() == "Enable") {
        location.reload();
    }

    // otherwise destroy the accordion and change the button to Enable
    else {
        $("#accord-1").accordion('destroy');
        $(this).html("Enable");
    }
});

按钮可以显示您最初想要的任何内容。关键是将其设置为“enable”并测试“enable”以重新加载页面。你也可以做任何你想做的字符串。这里有一个完整的例子。

丌官高远
2023-03-14

我在一个链接上使用了destroy方法,然后在另一个链接上重新初始化(虽然一个按钮切换会更好):

$(document).ready(function() {
    $("#hide").click(function() {
        $(".accordion").accordion("destroy");
    });

    $("#show").click(function() {
        $(".accordion").accordion({
            navigation  : true,
            collapsible : true,
            heightStyle : "fill",
            active      : 
        });
    });
});

我不得不编辑一些CSS使这工作,但这是最好的,我可以找到。

备注

我应该指出,我最终找到了一个更简单的方法。只需添加reload即可将页面恢复到原始状态:

$("#show").click(function() {
    location.reload();
});
 类似资料:
  • 我有一个表单(带有一个boxlayout.y),它嵌套了ComponentGroup+手风琴+切换按钮。当用户展开手风琴(在ComponentGroup中)时,切换按钮列表(在手风琴中)很长,它不适合屏幕。 我的问题是如何在所有窗体中启用滚动。 下面的代码是代码结构的示例。实际代码是由我编写的复杂解析器生成的,该解析器从json输入自动生成UI:

  • 手风琴效果其实就是通过JS改变元素的height,然后加上transition来让css动起来。 准备HTML结构 这里我们使用 dl , 因为 dt 刚好可以模拟标题, dd 模拟内容。 <div class="panel"> <dl> <dt>One Item</dt> <dd>One Item Content .</dd>

  • 目前,所有手风琴面板正在同时切换。我尝试将索引传递给click处理程序,但没有成功。如何将当前索引与当前setActive变量进行比较,以分别打开和关闭手风琴面板?我在生产中使用的数据没有唯一的ID,这就是我使用索引的原因。谢谢你的建议! 演示:https://codesandbox.io/s/react-accordion-using-react-hooks-forked-fup4w?file=

  • 我正在使用jQuery手风琴来隐藏一些数据。 accordion标题是一个带有一些标题的表格。有一个标题,我不希望你点击它,因为手风琴事件会触发。 所以 手风琴是可折叠的,如果您单击Test2(类nofunction),手风琴事件不应触发。但是如果您单击Test或其他表头,手风琴应该会触发事件。 我可以添加这个功能吗? 更新测试http://jsfiddle.net/e3Q8d/,包括jQuery

  • jQueryUI中的Accordion Widget是一个基于jQuery的可扩展和可折叠内容持有者,它被分成几个部分,可能看起来像标签。 jQueryUI提供了accordion()方法来实现这一点。 语法 (Syntax) accordion()方法可以使用两种形式 - $(selector,context).accordion(options)方法 $(selector, context).

  • 描述 (Description) 手风琴是一个图形控制元素,显示为堆叠的项目列表。 每个手风琴都可以expanded或stretched以显示与手风琴相关的内容。 可折叠布局 当您使用单个单独的可折叠元素时,您需要省略accordion-list包装元素。 以下是可折叠布局的结构 - <!-- Single collapsible element ------> <div class = "acc