有没有办法在Javascript中切换ul和ol?
我遇到了动态创建列表(ol或ul)的问题。我面临的问题是,有时我需要有序列表,有时需要根据JSON取消排序。我正在使用knockout,这是我的html有没有办法在Javascript中切换ul和ol?,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我遇到了动态创建列表(ol或ul)的问题。我面临的问题是,有时我需要有序列表,有时需要根据JSON取消排序。我正在使用knockout,这是我的html <ol data-bind="foreach: items" ><li><a data-bind="text: $data"></a></li></ol> 您可以看到orderedList可能是true或false。如果为真,我需要使用ol,如果为假,我需要使用ul。我还
<ol data-bind="foreach: items" ><li><a data-bind="text: $data"></a></li></ol>
您可以看到orderedList可能是true或false。如果为真,我需要使用ol,如果为假,我需要使用ul。我还希望避免复制。任何方法都可以做到这一点。这是我放在一起的一个粗糙样本,无法测试它。但是你可以得到这个想法
<!-- ko if : orderedList -->
<ol>
<!-- /ko -->
<!-- ko ifnot : orderedList -->
<ul>
<!-- /ko -->
<!-- ko foreach: items -->
<li><a data-bind="text: $data"></a></li>
<!-- /ko -->
<!-- ko if : orderedList -->
</ol>
<!-- /ko -->
<!-- ko ifnot : orderedList -->
</ul>
<!-- /ko -->
编辑:淘汰中没有if-else条件。因此,您必须依赖于使用多个Ko-if语句
EDIT2:用于OP的代码版本
<!-- ko if : orderedList -->
<ol data-bind="foreach: items">
<li><a data-bind="text: $data"></a></li>
</ol>
<!-- /ko -->
<!-- ko ifnot : orderedList -->
<ul data-bind="foreach: items">
<li><a data-bind="text: $data"></a></li>
</ul>
<!-- /ko -->
使用无容器绑定生成ul/ol标记,也可用于您的foreach@ryadavilli例如,从视觉上看,ul
和ol
之间的唯一区别是css列表样式类型
。还可以通过设置decimal
对ul
中的项目进行编号,以便您可以根据data@charlietfl,问题是ul不能被编号,ol不能是子弹。是的,他们可以,这是用简单的css完成的…见演示:你的代码给我错误否,'在哪个位置找不到要匹配的结束注释标记:ko if:orderedList'?这是ko-if的首次使用吗?还是第二个?谢谢你的主意。我已使用“请编辑您的答案”解决了此问题,很高兴知道它有效。至少是它的一个变体。我能够删除错误,但仍在与我给出的代码斗争。
<!-- ko if : orderedList -->
<ol data-bind="foreach: items">
<li><a data-bind="text: $data"></a></li>
</ol>
<!-- /ko -->
<!-- ko ifnot : orderedList -->
<ul data-bind="foreach: items">
<li><a data-bind="text: $data"></a></li>
</ul>
<!-- /ko -->