In this case you need to use on in a similar way to delegate, the syntax you are using is the replacement for bind.
$("#step_2").on("change", "#subcategory_id", function(){
alert( 'Success!' );
});
The first selector has to be an element that won't be replaced. This way, when the event bubbles up to this point it is caught. You then specify the actual element that will trigger the event as the 2nd parameter of .on.