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

标签 jquery

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

顺便说一句,我使用的是 jQuery 版本 1.7.1。

$("input:checkbox").change(function(){ 
    //some stuff happens
});

我那里有警报,但什么也没发生。所以我尝试将它包装在 $(document).ready(... 中,但同样什么也没有。所以我的猜测是,因为当 DOM 准备好时它们还没有创建复选框,所以它没有可以附加该操作的标签。

所以现在我很茫然。我不确定,如果不将 onChange="someFunction()" 放入

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

这实际上是在创建复选框。

有什么想法吗?

最佳答案

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

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

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

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

注意:其中<closest_checkbox_container>是 DOM 准备就绪时可用的最接近的复选框容器。

上面的方法调用为delegated eventsRef (阅读委托(delegate)事件下的部分)

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

关于jquery - 将 .change 事件分配给页面加载后创建的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10756013/

相关文章:

javascript - 尝试有一个链接+复选框,点击时可点击和文本更改

jquery - 使用 JQuery 更改 div 宽度时遇到问题

jquery - requireJS 与 JQuery、Masonry 和 ImagesLoaded : Object [object Object] has no method 'imagesLoaded'

javascript - 我的 javascript 复选框没有执行任何操作

javascript - 通过 JavaScript 解析 t.co url

javascript - jquery 在滚动时固定 div 弹跳

javascript - 如何在 AngularJS 部分模板中包含第 3 方 JavaScript 库?

jQuery 偏移量或位置

javascript - 如何从图表js中的图表中删除轴线

javascript - jquery验证器方法不接受纯数字或纯特殊字符,但接受上面有字母的情况?