jquery - jquery模板可以有for循环吗

标签 jquery jquery-templates

我需要构建一个 jQuery 模板,其中包含月份下拉列表和月份下拉列表。对于我来说,必须在每个值为 1 到 31 的 JSON 模型项中包含月份列表和日期列表,这样我就可以使用 {{each}} 语法构建选项,这似乎有些过分了。

我在另一个答案中看到了如何在 {{each}} 内部添加动态数组: Can I declare local/temp variables within a jQuery template?

我可能可以在其中定义一个值为 1 到 31 的数组。但即使这样也有点冗长。有没有更好的方法在 jquery 模板中执行 for 循环?

我可能可以找到一些日期对象来针对日期特定情况进行迭代,但是与日期无关的 for 循环用例又如何呢?

我希望循环在模板主体中完全定义,而不使用外部全局变量。通过全局变量,我可以轻松使用 {{each}}。

最佳答案

我找到了如何向 jquery 模板添加另一个标签。这是 for 标签定义。在脚本引用 jquery 和 jquery.tmpl.js 之后添加此内容:

(function ($) {
$.extend(jQuery.tmpl.tag, {
    "for": {
        _default: {$2: "var i=1;i<=1;i++"},
        open: 'for ($2){',
        close: '};'
    }
});
})(jQuery);

感谢 Roel Kramers 提供的文本区域标记示例: http://blog.sterkwebwerk.nl/2010/12/15/custom-jquery-template-tags-1/

此外,查看 jquery.tmpl 源代码以了解每个标签的定义也有很大帮助。

默认为 1 次迭代的 for 循环。以下是定义模板主体以使用它的方法:

<script id="TestTemplate" type="text/x-jQuery-tmpl">
    Day:<br/>
    <select name="DayOfMonth">
        {{for(i=1;i<=31;i++)}}
        <option value="${i}">${i}</option>
        {{/for }}
    </select>
</script>​

这是一个 jsFiddle 页面,可以查看它的实际情况: http://jsfiddle.net/mjlang/qvzdV/

关于jquery - jquery模板可以有for循环吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9656061/

相关文章:

javascript - Div 隐藏,直到我单击文本/按钮,出现,然后当我单击另一个时,它消失,另一个可见

javascript - 使用加载器在 PHP 中加载另一个页面,同时使用简单的 HTML 表单

knockout.js - knockout 渲染 View 时显示进度条

javascript - 异步 jQuery 模板

jquery - 使用外部复合 jQuery 模板

javascript - jQuery tmpl if 对象值 == 当前迭代值

jquery - 部分 ID id 通过 jquery 替换功能在文本中可见

ajax - $(this) 对象在 AJAX 回调中不可用

javascript - jQuery 键盘功能 keyPress

knockout.js - Knockout.js模板Foreach-强制完成重新渲染