Вторая функция изменения не работает.
В этом случае вы добавляете событие ко 2-му select
(#person_province
), которое было создано во время рендеринга, однако, при изменении 1-го select
появляется следующий код:
$('#person_province').replaceWith(
$(html).find('#person_province')
);
, при этом удаляются существующие select
и все существующие события, которые назначены этому select
.
Одна опция использовать делегирование события:
$(document).on("change", "#person_province", function...
другой вариант - не использовать .replaceWith
, а вместо этого заменить содержимое (или внутреннее HTML) новым содержимым, которое не изменит select
вместе с назначенными событиями.
В рамках 1-го select
обратного вызова измените .replaceWith
на:
$('#person_province').html(
$(html).find("#person_province").html())
);