1

我正在处理的网页是一个candidate-tile看起来像这样的 s 列表(这实际上是一个mustache模板:

<div class="candidate-tile">
    <div class="candidate-image">
        <img src="<%= candidate.image %>" width="50px" height=auto />
    </div>
    <div class="details">
        <h3 class="candidate-name"><%= candidate.name %></h3>
        <h6 class="candidate-dept"><%= candidate.dept %></h6>
        <span class="label label-info"><%= candidate.hostel %></span>
    </div>
    <div class="checkbox">
        <span class="check">&#10003;</span>
    </div>
</div>

我想在单击复选框时切换一个类。像这样的东西:

$('.checkbox').click(function(){
    $(this).parent().toggleClass("candidate_selected");
});

但这似乎不起作用。如何捕获checkbox并确保可以处理单击事件?

更新

mustache我刚刚测试了模板中的点击事件存在一些问题。我正在使用sammy.js加载模板。在页面的其余部分(已修复且未使用 mustache / sammy 呈现)单击事件工作正常。但由于某种原因,点击事件不适用于 mustache / sammy 渲染的部分。有谁知道发生了什么?我能做些什么来更好地解释这种情况吗?sammy 是在监听事件而不是让 jquery 处理它吗?

另一个更新

据我所知,问题是在candidate-tile加载包含处理程序的 js 文件时未加载 s click。项目稍后加载,但到那时,我猜,所有事件注册都已经发生,因此没有事件绑定到生成的新 DOM 元素。我这样想对吗?如果是,出路是什么?

非常感谢!

4

1 回答 1

1

您的代码应该可以正常工作。它将candidate_selecteddivwith class上切换类candidate-tile。尝试将 aconsole.log放入闭包中以查看点击是否触发。

如果您使用 AJAX 动态创建图块,则可能需要使用以下命令:

$('#container').on('click', '.checkbox', function(){....

containerdiv高于candidate-tile divs.

于 2012-07-25T08:00:17.303 回答