Jquery 动态添加的复选框未触发onCheck或OnOnCheck事件

Jquery 动态添加的复选框未触发onCheck或OnOnCheck事件,jquery,events,semantic-ui,Jquery,Events,Semantic Ui,我有一些代码,当它运行时,会循环遍历数组中的一些记录。对于每条记录,都会添加一个复选框 $('#manage_time').empty(); $.each(times, function( index, value ) { $('#manage_time').append(generate_range_html(value.begin, value.end, value.line, value.absent, value.hours)); }); $('.manage_time_abs

我有一些代码,当它运行时,会循环遍历数组中的一些记录。对于每条记录,都会添加一个复选框

$('#manage_time').empty();
$.each(times, function( index, value ) {
    $('#manage_time').append(generate_range_html(value.begin, value.end, value.line, value.absent, value.hours));
});

$('.manage_time_absent').checkbox();
如您所见,一旦添加了所有复选框,我将在循环之后初始化它们

这是我在上面的代码片段中提到的
generate\u range\u html()
函数

function generate_range_html(begin, end, line, absent, hours) {

    var elem = '\
        <div class="one fields">\
            <div class="field">\
                <div class="ui toggle checkbox manage_time_absent">\
                    <input type="checkbox" class="hidden">\
                    <label>Absent?</label>\
                </div>\
            </div>\
        </div>\
    ';

    return elem;
}
我假设这与动态添加的复选框有关,事件侦听器只侦听页面上已经存在的元素的事件


如何使此事件侦听器对以后动态添加的任何内容起作用?

我通过将我的
.checkbox()
事件处理程序直接移动到我的循环之后,将复选框添加到DOM中,解决了此问题。我不是每次都将它们初始化为复选框,而是直接附加事件处理程序

$('#manage_time').empty();
$.each(times, function( index, value ) {
    $('#manage_time').append(generate_range_html(value.begin, value.end, value.line, value.absent, value.hours));
});

$('.manage_time_absent').checkbox({
    onChecked: function() {
        console.log($(this));
    },
    onUnchecked: function() {
        console.log($(this));
    }
});

您的假设是正确的,您在元素存在之前添加事件处理程序。要解决此问题,请在添加新设置后再次使用设置对象调用
checkbox()
checkboxes@RoryMcCrossan“使用设置对象”是什么意思?我已经在为添加到DOM中的元素循环之后再次调用了
checkbox()
。我的意思是您需要将
{onChecked:function(){…
对象包含在DOM中call@RoryMcCrossan我明白了,谢谢。
$('#manage_time').empty();
$.each(times, function( index, value ) {
    $('#manage_time').append(generate_range_html(value.begin, value.end, value.line, value.absent, value.hours));
});

$('.manage_time_absent').checkbox({
    onChecked: function() {
        console.log($(this));
    },
    onUnchecked: function() {
        console.log($(this));
    }
});