gpt4 book ai didi

html - knockout foreach 绑定(bind)无序列表

转载 作者:搜寻专家 更新时间:2023-10-31 22:14:58 25 4
gpt4 key购买 nike

首先,圣诞快乐!

希望没有其他人在圣诞节那天工作,除非他们是 knockout 专家并且真的很想帮助我;-)

我正在使用极好的 jQuery Column Navigation Plugin以多列方式向我的用户显示数据。它在我的静态测试中运行良好,但现在将它实现到生产代码中,我遇到了一些希望不会太难解决的问题。

它需要一个 ul 元素内的 div 以允许在列表变大时滚动。这里的问题是我用来创建列的 foreach 将每个子元素包装在一个 div 中,而不是整个子集合中。

例如:

我应该生成如下所示的 HTML

<div id="myTree">
<ul>
<div> <!-- required to allow scrolling within each column -->
<li>
<a>Homepage</a>
<ul>
<div>
<li><a>Contact</a></li>
<li><a>Terms &amp; Conditions</a></li>
<li><a>Privacy information</a></li>
</div>
</ul>
</li>
<li>
<a>Contents</a>
<ul>
<div>
<li><a>Page 1</a></li>
<li>
<a>Page 2</a>
<ul>
<div>
<li><a href="./page2.1/">Page 2.1</a></li>
<li><a href="./page2.2/">Page 2.2</a></li>
</div>
</ul>
</li>
<li><a>Page 3</a></li>
</div>
</ul>
</li>
</div>
</ul>

但使用这个 knockout 代码

<div id="whatever" style="width: 100%">
<ul data-bind="foreach: { data: Column1 }">
<div>
<li><a data-bind="text: Name"></a>
<ul data-bind="foreach: { data: Column2 }">
<div>
<li><a data-bind="text: Name"></a>
<ul data-bind="foreach: { data: Column3 }">
<div>
<li><a data-bind="text: Name, attr: { 'href': Url }"></a></li>
</div>
</ul>
</li>
</div>
</ul>
</li>
</div>
</ul>

我最终得到的 HTML 看起来像

<div id="myTree">
<ul>
<div> <!-- required to allow scrolling within each column -->
<li>
<a>Homepage</a>
<ul>
<div>
<li><a>Contact</a></li>
</div>
<div>
<li><a>Terms &amp; Conditions</a></li>
</div>
<div>
<li><a>Privacy information</a></li>
</div>
</ul>
</li>
<li>
<a>Contents</a>
<ul>
<div>
<div>
<li><a>Page 1</a></li>
</div>
<li>
<a>Page 2</a>
<ul>
<div>
<li><a href="./page2.1/">Page 2.1</a></li>
</div>
<div>
<li><a href="./page2.2/">Page 2.2</a></li>
</div>
</ul>
</li>
<li><a>Page 3</a></li>
</div>
</ul>
</li>
</div>
</ul>

如何让内部 DIV 包装所有子项而不是父项中的单个子项记录?

非常感谢您的帮助,再次祝您圣诞快乐。

最佳答案

第一条评论是正确的...您只需这样做即可生成所需的 HTML 输出:

 <ul>
<div data-bind="foreach: { data: Column3 }">
<li><a data-bind="text: Name, attr: { 'href': Url }"></a></li>
</div>
</ul>

尽管直接在 ul 中使用 div 并不是完全有效的 HTML,所以我不知道您为什么要这样做。

另一种方法是使用虚拟元素:

 <ul>
<div>
<!-- ko foreach: { data: Column3 } -->
<li><a data-bind="text: Name, attr: { 'href': Url }"></a></li>
<!-- /ko -->
</div>
</ul>

如您在评论中提到的那样,不修改“脚本”就没有(好的)方法来获得所需的输出。

关于html - knockout foreach 绑定(bind)无序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14027670/

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