【问题标题】:jQuery trigger change on class?jQuery触发类的变化?
【发布时间】:2012-11-22 21:57:09
【问题描述】:

我有一个复选框列表。每个复选框都有.change(function(){alert('xyz')})。每个复选框都有一个类abc
我还有一个名为“ALL”的附加复选框。当“ALL”复选框被更改时,它会更改所有其他复选框的状态。

我希望更改“全部”复选框以触发所有其他复选框的更改 (.change(...))。但由于其他复选框的状态是以编程方式完成的,因此它本身不起作用。
我尝试使用$('.abc').change() 触发所有复选框的更改事件,但没有成功。
我做错了什么,如何完成手头的任务?
顺便说一句,如果我这样做 $('#id_of_a_specific_checkbox').change() 效果很好。


谢谢。

更新
我所拥有的示例: http://jsfiddle.net/ZqJvc/

这几乎是我在大型项目中所拥有的......在简短的例子中它可以工作:/
但在实际项目中它不起作用。唯一的区别是在实际项目中我有很多复选框。奇怪......我猜它又回到了调试器。谢谢。

更新
在 Chrome 完全崩溃之后……我重新启动了浏览器,它就像上面的例子一样工作。抱歉浪费了我们的时间。再次感谢各位。

【问题讨论】:

  • 使用 trigger() jquery 函数。 .trigger('改变')
  • 你能不能不要$(".abc").each(function () { $(this).change(); });
  • 为什么需要触发所有复选框的更改事件?如果您尝试实际更改将使用 prop() 完成的状态。无论如何:$('.abc').each(function() {$(this).trigger('change');});
  • 为什么$('.abc').change() 不起作用,有什么错误吗?向我们展示代码和/或设置一个小型演示。
  • 它对我有用:jsfiddle.net/9zYN8

标签: javascript javascript-events jquery


【解决方案1】:

要在所有复选框更改时将所有具有 .abc 类的复选框设置为 true,请使用

$("input[name=ALL]").change( function( ) {

    $(".abc").prop("checked", $(this).prop("checked") );
    $(".abc").trigger("change");
});

小提琴here

【讨论】:

  • 谢谢。但只会更改复选框的状态,但不会触发其更改事件。
  • 当其他人在问题下的 cmets 中指出它时,它是选项之一,我应该工作......它确实如此,在一个简化的例子中 jsfiddle.net/9zYN8 但在我的实际项目中没有...... .我想我会分解它并搜索问题背后的原因。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-21
  • 2014-12-20
  • 1970-01-01
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
  • 2022-07-16
相关资源
最近更新 更多