change event doesn’t fire when the value is programmatically changed, if it did it would cause infinite loops in many situations.
If you need the event to fire, then trigger it when changing the value yourself using
.change(), like this:
.change() is a shortcut for
.trigger("change") or, if you don’t want that
change event to bubble for some reason, then use