.click () falla después del cambio dom

Busqué en la web pero no encontré ninguna respuesta ya que este "problema" no es el habitual sobre la diferencia entre .on () y .click (). Con jquery 2.1.3 la función de clic es una abreviatura paraon.("click", handler) por lo que debería disparar una función (o cualquier otra) después de que se cambie el dom. Pero esto solo funciona si uso .on (). ¿Por qué? (Ejemplo a continuación)

$('#button1').click(function() {
    $('div').html("<p id="button2">Hello</p>");
});

$('#button2').click(function() {
    alert(0); //THIS DOESN'T WORK
});

$(body).on("click", "#button2", function() {
    alert(0); //THIS WORKS!
});

Respuestas a la pregunta(3)

Su respuesta a la pregunta