Por que o evento jquery change não é acionado quando eu defino o valor de um select usando val ()?

A lógica nochange() O manipulador de eventos não está sendo executado quando o valor é definido porval(), mas é executado quando o usuário seleciona um valor com o mouse. Por que é isso?

<select id="single">
    <option>Single</option>
    <option>Single2</option>
</select>

<script>
    $(function() {
        $(":input#single").change(function() {
           /* Logic here does not execute when val() is used */
        });
    });

    $("#single").val("Single2");
</script>

questionAnswers(9)

yourAnswerToTheQuestion