将正在循环的元素传递给事件处理程序

时间:2017-04-18 15:12:37

标签: node.js handlebars.js express-handlebars

如何将正在循环的元素传递给事件处理程序。

foo.hbs

<div>
    {{#each products}}
        // some html code
        <p>{{this}}</p>                            <!-- output product object -->
        <button onclick="foo(this)">Add</button>   <!-- output button object-->
        <button onclick="foo({{this._id}})">Add</button>   <!-- uncaught syntax error -->

    {{/each}}
</div>

<script type="text/javascript">
    function foo(product) {
        console.log(product);
    }
</script>

上面的代码:product参数给出了当前迭代的HTMLButton而不是product

问题:如何将product而不是button元素传递给处理程序?
我正在使用express-handlerbars

1 个答案:

答案 0 :(得分:0)

您可以尝试:

this.parentNode

指的是html parent。

并在您的函数中:

的console.log(product.id);

的console.log(typeof运算(产品)); //显示对象

控制台打印html,但产品是您从onclick发送的对象。因此,您可以访问任何相关的属性。

希望它可以提供帮助。