如果有的话,jQuery 的 change 方法在这里做什么?

What, if anything, is jQuery's change method doing here?

我熟悉将处理程序附加到复选框的 属性 更改,如下所示:

$(function(){
  $("#chkbox").change(function(){
   alert($(this).val()) 
  });
});

然而,这样做 $("#chkbox").change(); 会触发我的警报,但复选框的状态实际上不会改变,这告诉我 jQuery 只是触发它已经绑定到的处理程序一个元素。像 [bourbon.io][1] 那样调用它来关闭 its modal 有什么用?

$(".modal-fade-screen, .modal-close").on("click", function() {
  $(".modal-state:checked").prop("checked", false).change();
});

如果我在末尾省略了 .change(),模态框仍然关闭并且看起来一切正常。链接change()有什么用?我问,因为我正在尝试将 Angular 与此模态一起使用,并且我需要调用关闭复选框的状态,以便我可以使用其他一些按钮关闭模态。 angular.element(".modal-state:checked").prop("checked", false); 似乎工作正常,但由于我不知道 Angular 中的 change 之类的东西 (它在 jQlite 中不存在),我想确定我没有遗漏任何东西。

如果您将 change 事件侦听器附加到元素,每次用户触发该事件时,事件处理程序都会触发。但是,如果您以编程方式操作具有通常会触发事件处理程序的更改的元素,则事件处理程序不会触发。因此,您希望在进行更改后手动触发更改事件,以便可以触发事件处理程序。

$(".modal-state:checked").prop("checked", false).change();
//or $(".modal-state:checked").prop("checked", false).trigger('change');

chaining change() 有什么用? 这完全取决于 change event handler 的作用。