underscore/lodash 模板上的事件绑定

Event binding on underscore/lodash templates

我在 jquery 插件中有一个示例 lodash 模板,如下所示:

<div>
    <% _.forEach(circle, function(circle, idx){%>
          <a class='circle'> <%- circle.circleName %> </a>
    <%})%>
</div>

我想将点击事件处理程序添加到 a 标签。 目前,在 DOM:

上呈现上述模板后,我正在执行以下操作
$(".cricle").each(function(circle){
    $(circle).click(function(elm){
        console.log("Clicked: ", elm)
    })
})

所以,在 lodash 或 jquery 中有没有一种方法可以让我不必做所示的重复性工作。

谢谢!

首先,您无需遍历匹配的元素即可将相同的事件处理程序绑定到元素集合。以下应该没问题:

$('.circle').on('click', function(elm) { console.log('Clicked: ', eld); });

我很确定lodash 没有提供在模板中绑定事件处理程序的特殊方法。

您可以使用 vanilla JavaScript 在您的元素上定义内联事件处理程序。

<a class='circle' onclick="console.log('Clicked: ', this">
  <%- circle.circleName %>
</a>

虽然应该避免以上情况。