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));
}
});