【问题标题】:Changing .prop using jQuery does not trigger .change event使用 jQuery 更改 .prop 不会触发 .change 事件
【发布时间】:2014-08-16 03:06:11
【问题描述】:

我在复选框上有一个事件监听器:

<input type="checkbox" name="something">

我的事件监听器:

$('input[type="checkbox"][name="something"]').change(function() { 
    //DO SOMETHING 
});

我有另一个事件监听器改变了复选框的.prop

$('#button').click(function() { 
    $('input[type="checkbox"][name="something"]').prop("checked", false);
});

当我选中复选框 DO SOMETHING 时,触发。当我点击#button 时,.prop 发生变化,我看到复选框在视觉上取消选中,但DO SOMETHING 没有被触发...

我忽略了什么?

【问题讨论】:

标签: jquery


【解决方案1】:

当用户在页面上的交互改变了值而不是使用代码修改值时会触发 Change 事件。

这里更改属性后需要使用.change().trigger("change")

$('input[type="checkbox"][name="something"]').prop("checked", false).change();

Working Demo

【讨论】:

  • 我以为 prop 负责更改事件的生成?
  • 酷。谢谢。很好的演示证明了这个概念。 +1 谢谢。
  • 谢谢!所以 .prop().change() 对我不起作用的原因是因为我在 MeteorJS 中做 jQuery,它调用 jQuery 的方式略有不同。我完全按照你的方法试了一下,效果很好。
  • @fuzzybabybunny:这不是因为 MeteorJS。 prop() 不会触发 change 事件。
  • @MilindAnantwar,我正在做 .prop,然后是 .change 流星代码 (Template.myTemplate.events),但它没有用。然后我将完全相同的 jQuery 代码放在Template.myTemplate.rendered 下,它运行良好。
【解决方案2】:

更新版本

.change() 已被弃用

改用.trigger('change')

$('input[type="checkbox"][name="something"]').prop("checked", false).trigger('change');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多