我有以下动态生成一些复选框的JQuery代码:
var container = $('#checkbox_list_container');
var html = '<input type="checkbox" class="selection_checkboxes" name="ids[]" value="1" />';
container.append($(html));
我还有以下代码,当点击任何这些复选框时会弹出警报:
$(document).ready(function() {
$('.selection_checkboxes').click(function() {
alert('click detected');
if ($(this).attr('checked'))
{
if ($('.selection_checkboxes:checked').size() > 3)
{
alert('You can only select up to 3 items');
return false;
}
}
});
});
出于某种原因,JQuery无法检测何时单击任何动态生成的复选框并显示警报(“单击检测到”)消息,更不用说获取具有相同类名的所有已选中复选框的计数
知道我做错了吗?
答案 0 :(得分:3)
您需要使用jQuery的live
将处理程序附加到动态创建的元素:
$('.selection_checkboxes').live('click', function() {
//stuff
});
如果您的所有复选框都在#checkbox_list_container
中,则delegate
效率更高:
$('#checkbox_list_container').delegate('.selection_checkboxes', 'click', function() {
//stuff
});