将.change事件分配给在页面加载后创建的复选框

Rob*_*b M 2 jquery

我有一个包含下拉列表的页面,当用户从列表中选择一个选项时,会触发一个ajax调用并创建一系列复选框.有些是经过检查,有些则未经过检查.我需要记录是否对复选框进行了任何更改,即选中/取消选中.我尝试使用以下内容,但没有任何反应.

我正在使用jQuery版本1.7.1,顺便说一句.

$("input:checkbox").change(function(){ 
    //some stuff happens
});
Run Code Online (Sandbox Code Playgroud)

我在那里有一个警报,但什么也没发生.所以我试着将它包装成一个$(document).ready(...但是没有.所以我的猜测是,由于在DOM准备就绪时尚未创建复选框,因此没有标记将该操作附加到.

所以现在我不知所措.我不知道,没有把onChange="someFunction()"

.append("<input type='checkbox' id='" + theData.DATA + "' value='" + theData.DATA + "'>" + tempName + "<br />");
Run Code Online (Sandbox Code Playgroud)

这实际上是创建复选框.

有什么想法吗?

Sel*_*gam 7

你是对的,如果你正在使用jQuery 1.7 ..使用.on如下面的语法,

$(<closest_checkbox_container>).on('change', 'input:checkbox', function(){ 
    //some stuff happens
});
Run Code Online (Sandbox Code Playgroud)

如果您使用的是旧版本,请使用.delegate,

$(<closest_checkbox_container>).delegate('input:checkbox', 'change', function(){ 
    //some stuff happens
});
Run Code Online (Sandbox Code Playgroud)

注意:<closest_checkbox_container> DOM准备就绪时,最接近的复选框容器在哪里.

调用上述方法delegated events.参考(阅读委托活动下的部分)

或者,最好$("input:checkbox").change(function(){在添加完这些复选框后编写.但是,假设所有复选框仅添加一次,则效果更好.