gpt4 book ai didi

javascript - Bootstrap 4 Accordion 在 Knockout foreach 循环中,展开/折叠问题时更改图标

转载 作者:行者123 更新时间:2023-11-28 15:06:26 26 4
gpt4 key购买 nike

我在父级 Accordion 中有一个 Accordion 列表,例如:

<div id="parentAccordion" class="card-accordion">
<div class="card">
<div class="card-header bg-black text-white pointer-cursor">
<div class="row">
<div style="font-size:16px">Custom - <span data-bind="text:$root.nameSelected"></span></div>
</div>
</div>
<div id="parentBody" class="collapse show" data-parent="#parentAccordion" style="background-color: #d9e0e7">
<!-- begin #accordion -->
<div id="oAccordion" class="card-accordion">
<!-- begin card -->
<div class="card" data-bind="foreach:$root.fbolist">
<div style="padding: 3px">
<div class="card-header bg-black text-white pointer-cursor" data-toggle="collapse" data-bind="attr: { href: '#O'+CourseId(), title: cName }">
<i class="fa fa-caret-right"></i>
<span data-bind="text:cName">NAME</span>
</div>
<div class="collapse" data-bind="attr:{'id':'O'+CourseId()}" data-parent="#oBody">
<div class="card-body white text-justify">
<!-- body here -->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

我正试图在展开到插入符向下和折叠到插入符右时更改图标。一次只能展开子列表 (fbolist) 中的一个 Accordion ,折叠其他的。我用这个 js 来更改图标:

$('.collapse').on('shown.bs.collapse', function () {
$(this).parent().find(".fa-caret-right").removeClass("fa-caret-right").addClass("fa-caret-down");
}).on('hidden.bs.collapse', function () {
$(this).parent().find(".fa-caret-down").removeClass("fa-caret-down").addClass("fa-caret-right");
});

但它会更改 Knockout foreach 中其余 Accordion 的所有图标。有没有一种方法可以在只有一个扩展时不将所有图标更改为插入符号?它应该只有展开的那个图标和其他的右插入符号

最佳答案

您可以创建一个自定义绑定(bind)处理程序来仅针对折叠/展开元素:

ko.bindingHandlers['collapse'] = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
$(element).on('shown.bs.collapse', function () {
$(element).parent().find(".fa-caret-right").removeClass("fa-caret-right").addClass("fa-caret-down");
}).on('hidden.bs.collapse', function () {
$(element).parent().find(".fa-caret-down").removeClass("fa-caret-down").addClass("fa-caret-right");
});
}
};

然后应用到具有 collapse 类的元素。

<div class="collapse" data-bind="attr:{'id':'O'+CourseId()}, collapse" data-parent="#oBody">
<div class="card-body white text-justify">
<!-- body here -->
</div>
</div>

关于javascript - Bootstrap 4 Accordion 在 Knockout foreach 循环中,展开/折叠问题时更改图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56548463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com