gpt4 book ai didi

javascript - Foreach : Toggle each icon - KnockoutJS

转载 作者:行者123 更新时间:2023-11-30 09:40:44 25 4
gpt4 key购买 nike

我正在尝试将加号切换为减号,在该部分立即被单击并展开后。按照我试过的代码。

<div>
<ul style="list-style: none">
<li data-bind="foreach: model">
<div id="panelHeading">
<a href="#" data-bind="click: $parent.toggleShow"><i class="fa fa-plus" style="padding-right: 5px;">+</i></a>
<span data-bind="text: Main"></span>
</div>
<div id="panelContent" data-bind="if: show">
<ul id="clustersList" data-bind="foreach: Sub" style="list-style: none">
<li><span style="padding-left: 20px;" data-bind="text: $data"></span></li>
</ul>
</div>
</li>
</ul>
</div>
=== JS ====
var viewModel = function() {
var self = this;
self.model = ko.observableArray([{
Main: "Main1",
Sub: ["hello", "hi"],
show: ko.observable(false)
}, {
Main: "Main2",
Sub: ["one", "two"],
show: ko.observable(false)
}]);
self.toggleShow = function (item) {
$('this a').find('i').toggleClass('fa fa-plus fa fa-minus');
var index = self.model.indexOf(item);
if (item.show())
self.model()[index].show(false);
else
self.model()[index].show(true);
}
}

ko.applyBindings(new viewModel());

请检查我的 fiddle here .

任何建议都会有所帮助。

最佳答案

只需更改您的 HTML 以根据 show 的当前值应用正确的样式:

<i class="fa" data-bind="css: { 'fa-plus': !show(), 'fa-minus': show() }"></i>

在你的 JS 中:

self.toggleShow = function (item) {
item.show(!item.show());
};

参见 Fiddle

关于javascript - Foreach : Toggle each icon - KnockoutJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41243043/

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