Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery-为列表中的项目编号_Javascript_Jquery_Dust.js - Fatal编程技术网

Javascript JQuery-为列表中的项目编号

Javascript JQuery-为列表中的项目编号,javascript,jquery,dust.js,Javascript,Jquery,Dust.js,我希望列表中的项目编号从10-->0开始 我有以下代码: <ul class="StoryBoard" id="StoryBoard"> {#storylines} <li>{text|bl|s}</li> {/storylines} </ul> {#故事情节} {text | bl | s} {/故事情节} 这将如何在浏览器中呈现的示例如下: <ul class="StoryBoard" id="StoryBoard"&g

我希望列表中的项目编号从10-->0开始

我有以下代码:

<ul class="StoryBoard" id="StoryBoard"> 
{#storylines}
<li>{text|bl|s}</li>    
{/storylines}
</ul>
    {#故事情节}
  • {text | bl | s}
  • {/故事情节}
这将如何在浏览器中呈现的示例如下:

<ul class="StoryBoard" id="StoryBoard">
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
  • 试验
  • 试验
  • 试验
  • 试验
然而,我希望它呈现如下:

<ul class="StoryBoard" id="StoryBoard">
<li>Test (10)</li>
<li>Test (9)</li>
<li>Test (8)</li>
<li>Test (7)</li>
</ul>
  • 测试(10)
  • 测试(9)
  • 测试(8)
  • 测试(7)
始终最多有10个项目

$('#StoryBoard').find('li').each(function(i){
    $(this).append(' ' + (10 - i ));
});
测试?:

我建议:

$('#StoryBoard li').text(function(i,t) { return t + ' (' + (10 -  i )+ ')'});

text()
方法中的匿名函数有两个参数
i
(当前元素的索引(当它遍历选择器匹配的所有元素时))和
t
,这是当前元素的文本

然后,在附加左括号、索引和右括号后返回当前文本

参考资料:


由于您使用的是dustjs,因此在迭代时可以访问
@idx
帮助程序:

{#storylines}
<li>{text|bl|s} ({@idx}{.}{/idx})</li>    
{/storylines}
它用迭代的当前索引的值推送一个新的上下文。原来
context.stack
对象有一个属性
of
,该属性提供堆栈中的项目数,因此您可以编写自己的
negidx
帮助程序:

dust.helpers.negidx = function(chunk, context, bodies) {
  return bodies.block(chunk, context.push(context.stack.of - context.stack.index));
};
此时,以下内容将完成原始问题的要求:

{#storylines}
<li>{text|bl|s} ({@negidx}{.}{/negidx})</li>    
{/storylines}
{#故事情节}
  • {text | bl | s}({@negidx}{.}{/negidx})
  • {/故事情节}
    这里有一个jQuery中的演示 我不确定您是否希望在dust.js或jQuery中使用此修复程序

    $(function () {
       var $li   = $('ul#StoryBoard li'),
           count = $li.size();
        $li.each(function (index) {
            $(this).text($(this).text() + (count - index));
        })
    });
    

    我没有一个片段可以完全满足您的要求,但基本上您应该能够使用.each()来修改每个孩子。你不能使用sum
    10-@idx
    (或类似的)吗?简短的答案是否定的,但幸运的是有一个较长的答案;我编辑了我的答案以反映它。对于较长的答案,+1。)谢谢,这正是我想要的。我还不习惯使用带有灰尘的助手,我该如何将它们包括在内?我在节点上的app.js中包含了dustjs帮助程序。我可以使用诸如idx之类的常规函数,在哪里添加您编写的negidx函数?在您可以访问
    dust
    对象的任何位置。行
    dust.helpers.negidx=…
    就是我要做的。它只是在
    dust.helpers
    对象上定义一个函数。
    $(function () {
       var $li   = $('ul#StoryBoard li'),
           count = $li.size();
        $li.each(function (index) {
            $(this).text($(this).text() + (count - index));
        })
    });