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

对于多个选项,一次仅允许一个数据切换

端木飞
2023-03-14

我是一个初学者与javascript和jQuery,我使用opencart和过滤器扩展。

我试图一次只显示一个数据切换。

过滤器扩展有多个选项,如类别、大小、类别、颜色等。单击每个选项时会显示一个隐藏的div,再次单击时会将其隐藏。

可以单击每个选项,同时显示所有隐藏的div。我试图一次只显示一个选项,因此,例如,单击选项a,它将打开,但如果在a打开时单击选项B,则B将打开,a将关闭。有点像开关。

我相信javascript是在bootstap中实现的。js包括。但单击的每个选项都会对其html" target="_blank">html执行以下操作:

单击某个选项时(打开):

<div class="af-container"> 
<div class="af-heading af-collapse collapsed" data-toggle="collapse" aria-expanded="false" data-target="#s"> 
<p>Category:</p><span></span> 
</div> 
<div aria-expanded="false" id="s" class="af-elements collapse" style="height: 0px;"> 
</div> 
</div>

当打开折叠类被添加并且咏叹调扩展被设置为"false"时,在咏叹调扩展下面的div中也被设置为"false"。

打开选项时,单击(关闭):

<div class="af-container"> 
<div class="af-heading af-collapse" data-toggle="collapse" aria-expanded="true" data-target="#s"> 
<p>Category:</p><span></span> 
</div> 
<div aria-expanded="true" id="s" class="af-elements collapse in" style=""> 
</div> 
</div>

当关闭折叠类被删除,咏叹调扩展被设置为“真”,在下面的div咏叹调扩展被设置为“真”,在类被添加到div时,高度也从样式中删除。

“html”代码似乎在一个范围内。标记文件:

 <af_group>
    <div class="af-container">
        <div class="af-heading af-collapse" data-toggle="collapse" data-target="#{filter.name}_{filter.group_id}_{opts.filter_id}" aria-expanded="true">
            <p class="title">{filter.caption}</p><span></span>
        </div>
        <div id="{filter.name}_{filter.group_id}_{opts.filter_id}"  class="af-elements collapse {filter.collapse == '0'?'in':''}" aria-expanded="true">
            <div class="af-wrapper">
                <div data-is='af_group_{filter.type}' filter={filter} filter_id={opts.filter_id}></div>
            </div>
        </div>
    </div>
    </af_group>

一次只打开一个窗口的最佳方式是什么?是否有一个简单的解决方案,或者可能是覆盖/添加到引导的javascript。例如,js(如果是这样的话)一次只允许一个折叠的类?

任何帮助将不胜感激!

共有2个答案

魏俊茂
2023-03-14
var $myGroup = $('#myGroup');
$myGroup.on('show.bs.collapse', '.collapse', function(e) {
    $myGroup.find('.collapse.show').collapse('hide');
});
郭恩
2023-03-14

这是一个不更改aria标记的示例。

我添加了一些css,这样我们就可以看到它是如何工作的

希望这有帮助:)

//Event listener
$('div[data-toggle="collapse"]').parent().click(function() {
  $('div[data-toggle="collapse"]').each(function() {
    //Reset values for all
    $(this).addClass('collapsed');
    $(this).next().removeClass('in');
  })
  //Change values for the selected one
  $(this).children().removeClass('collapsed');
  $(this).children().next().addClass('in');
})
.af-container {
  background-color: pink;
  border: 1px lightblue solid;
  width: 50px;
  height: 50px;
  display: inline-block;
  position: relative;
}

.af-container .collapsed {
  background-color: lightblue;
  border: 1px pink solid;
  width: 50px;
  height: 50px;
  display: inline-block;
}

.dropdown {
  background-color: tomato;
  border: 1px pink solid;
  width: 50px;
  height: 50px;
  display: inline-block;
  position: absolute;
  top: 65px;
  display: none;
}

.in{
  display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="af-container">
  <div class="af-heading af-collapse collapsed" data-toggle="collapse" aria-expanded="false" data-target="#s">
  </div>
  <div class="dropdown"></div>
</div>
<div class="af-container">
  <div class="af-heading af-collapse collapsed" data-toggle="collapse" aria-expanded="false" data-target="#s">  </div>
  <div class="dropdown"></div>

</div>
<div class="af-container">
  <div class="af-heading af-collapse collapsed" data-toggle="collapse" aria-expanded="false" data-target="#s">  </div>
  <div class="dropdown"></div>

</div>
 类似资料:
  • 我发现的大部分stackoverflow结果都是用于序列化整个对象或反序列化的。我的一些想法… 是否可以从三个值字段中删除@SerializedName并只序列化不为null的值? 我是否可以在java中构建某种可选的数据类型对象,该对象基于具有值的数据类型进行设置? 这个对象是一个更大的对象的一部分,而subitems对象有一个相当大的深度,它只是一个注释。我希望这是一个重复的问题,我只是找不到

  • 问题内容: 我想使我的网站一次只允许一个会话。例如,假设用户已经登录到我在firefox上的网站,如果该用户再次登录到另一台浏览器(例如同一台计算机或另一台计算机上的Opera),则Firefox上的会话将被破坏。但是,如果仍为一届会议,则有关Firefox的会议仍将保留。我可以知道该怎么做吗?我正在使用php和apache。谢谢。 问候。本杰明 问题答案: 我建议您做这样的事情: 假设用户“ A

  • 问题内容: 我有一个表,其中包含三个带有一些记录的字段。如果用户要编辑表中的记录,则不允许其他用户同时编辑该记录。我可以采取什么样的步骤来实现这一目标? 问题答案: 来自桌面应用程序背景的许多人会想知道如何在Web应用程序中完成此操作。 锁定记录标志 在桌面环境中,一种方法是在该行上具有一个布尔值列,以指示其正在被编辑以及由谁编辑。您当然可以使用Web应用程序执行此操作,但这是一种非常糟糕的方法,

  • 问题内容: 我想使用数据库模型为我的项目控制一些配置设置。例如: 此模型应该只有一个实例: 当然,如果有人不小心创建了一个新实例,那就不是世界末日了。我可以做。但是,是否有一种方法可以将其锁定,从而无法创建多个实例? 鉴于Django从那时起发生了很大变化,是否有解决此问题的标准方法?还是我应该只使用并接受可能重复的内容? 问题答案: 您可以重写方法以控制实例数:

  • 问题内容: 我在各自的数据库中都有WordPress实例。要进行更新,我需要查询所有活动插件,这些插件存储在表“ wp_options”中,可通过以下方式访问 如何访问 所有 活动的插件设置(分布在多个数据库中)并将其输出到一个SQL结果中?我知道语法,但是如何使用上面的语句从那里继续? 单个数据库中的请求如下所示: 问题答案:

  • 我正在尝试从多索引数据帧中仅使用一个索引来创建新的数据帧。 理想情况下,我想要这样的东西: 和: 基本上,我想删除除level之外的多索引的所有其他索引。有没有一个简单的方法可以做到这一点?