javascript - 将Class 添加到 Handlebars 脚本中的<tr>

标签 javascript jquery handlebars.js addclass

是否有一种简单的方法可以将类添加到 Handlebars 脚本中的表行?

现在我正在循环 JSON 并希望将 pagenumber 类添加到所有行

for (var i = 0; i < allData.length; i++) {

        if (i % 10 == 0 && i != 0) {
            pageNumber++;                             
        }
        $('.tableRow').addClass('page' + pageNumber);
        console.log("page" + pageNumber);
    } 

.tableRow 是 <tr>我是我的 Handlebars 脚本

一切正常,但我无法添加到该类。如果我尝试附加到脚本之外的类,它工作正常

HTML 代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <link rel="stylesheet" type="text/css" media="screen" href="/includes/css/style.css" />
</head>
<body>
    <div class="wrapper">
        <div class="tab-container">

            <div class="tab-content">

                <div id="scriptData"></div>


                <script id="template" type="text/x-handlebars-template">


                        <table class="table-look">
                            <thead>
                                <tr>
                                    <th class="Header">Some data</th>
                                    <th class="Header">Some data</th>
                                    <th class="Header">Some data</th>
                                    <th class="Header">Some data</th>
                                </tr>
                            </thead>
                            <tbody>
                                {{#each this}}
                                <tr class="tableRow">
                                    <td">{{data}}</td>
                                    <td>{{data}}</td>
                                    <td>{{data}}</td>
                    <td>{{data}}</td>                               
                                </tr>
                    {{/each}} 
                            </tbody>                           
                        </table>
                </script>

            </div>
        </div>
    </div>

    <script type="text/javascript" src="includes/js/libs/jquery-1.11.3.min.js"></script>
    <script src="includes/js/libs/handlebars-v4.0.2.js"></script>
    <script type="text/javascript" src="includes/js/custom.js"></script>
</body>
</html>

最佳答案

我见过 HandlebarJS 一些,但自己从未使用过它 - 所以这似乎是一个掌握它的好机会。

jQuery 不会获取 <script id="..." type="text/x-handlebars-template"> 中的任何元素。您没有任何可供 jQuery 使用的 DOM 元素 - 您只有一些文本。这有点令人困惑,因为它看起来就像普通的 HTML 元素 - 但它只是文本。这是一个脚本。

您有 2 个选择 - 您可以:

  • 答:在渲染模板后循环遍历 DOM 元素。
  • B:使用 Handlebars 的 Block Expressions

选项A:

$(document).ready(function () {
    var source = $("#template").html();
    var template = Handlebars.compile(source);
    var html = template(context);
    $('#foo').html(html);
    $('.tableRow').each(function(idx,o){
        $(this).addClass('page'+Math.floor(idx/2));
    });
});

http://jsfiddle.net/daveSalomon/xzey0dnj/3/

选项B:

模板

<tr class = "tableRow {{#page-number}}page{{/page-number}}">

JS

var fooItemNumber = 0;
Handlebars.registerHelper('page-number', function(items, options) {
    var out = "page";
    return out + Math.floor(fooItemNumber++/2);
});

http://jsfiddle.net/daveSalomon/xzey0dnj/5/

关于javascript - 将Class 添加到 Handlebars 脚本中的<tr>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33477095/

相关文章:

ember.js - 在动态位置插入部分/组件

javascript - 在鼠标按下事件中选择的两点之间绘制直线

javascript - 二叉树在后端或前端的实现

jquery - 将 div 附加到相对于页面居中的 div

jquery - Accordion 式菜单 - 单击另一个链接时子菜单不隐藏 - jQuery

gruntjs - 如何根据开发/构建上下文使用 Assemble 包含不同的内容部分?

javascript - Handlebars 辅助函数 - 提取属性名称

javascript - 为什么 Javascript 项目将构建的结果检查到 git 中?

javascript - 最初选择但不滑动时出现的 JQuery slider - IE9

javascript - onclick 属性未按预期工作