【发布时间】:2013-01-24 19:17:30
【问题描述】:
当多个复选框中的任何一个的“已选中”状态发生更改时,我需要触发一个事件,并且这样做不是通过监听点击。为什么?
看起来像这样:
BUILD YOUR SUNDAE!
All Flavors [] Chocolate [ ] Vanilla [ ] Strawberry [ ] Pistacchio [ ]
当点击 All Flavors 时,所有其他复选框都设置为选中:
function checkAllFlavors() {
$("#flavorFilterContainer input.flavor-filter").each(function (i, elem) {
$(elem).prop('checked', true);
});
}
上面的功能明显有效——所有的复选框都被选中。但是,如果我像这样监听状态变化:
("#flavorFilterContainer input.flavor-filter").live('change', function () {
DispenseFlavor()
});
DispenseFlavor() 方法仅在我物理单击复选框时被调用,而不是当复选框的选中状态通过将 checked 属性设置为 true 来更改时,如 checkAllFlavors() 函数中发生的那样。
复选框的更改状态是否仅通过 GUI 交互而不是通过使用$(elem).prop('checked', true) 设置属性来改变?
【问题讨论】:
-
从 jQuery 1.7 开始,
.live()方法已被弃用。使用.on()附加事件处理程序。旧版本 jQuery 的用户应该使用.delegate()而不是.live()。 -
交互事件不会在您修改属性/属性时自动触发,您必须自己触发。
-
@KevinB:感谢信息互动活动。
-
@ROY Finley:感谢提醒;已将其更改为 on()。