Yes you can use jQuery on markup inserted into the DOM, but you have to be sure that that code is bound after the content is inserted into the page and not before.
To elaborate, and demonstrate the problem I think you're having, consider the following fiddle http://jsfiddle.net/47wVQ/:
You have some location in the DOM where you're inserting elements:
<div id="testTarget"></div>
And some JS:
var elemBefore = $('<p id="thingToInteractWith">BEFORE</p>');
$('#thingToInteractWith').on('click', function(){
$(this).hide();
});
$('#testTarget').append(elemBefore); //At this point, the element is in the DOM
//Below is what should be done instead
var elemAfter = $('<p id="anotherThingToInteractWith">AFTER</p>');
//Binding AFTER element exists
$('#testTarget').append(elemAfter); //At this point, the element is in the DOM
//Here I'm binding the click action after the markup is in the DOM
$('#anotherThingToInteractWith').on('click', function(){
$(this).hide();
});
The long story short if you're inserting new content into the DOM (like your form) and you want show/hide, etc to work on that new content, make sure to fire your JS after you use $.html.
In your specific example this would look like:
function bindEvents(){
//This assumes you have form elements with the following IDs
$('#myFormElement1').on('change', function(){ $(this).hide() });
$('#myFormElement2').on('change', function(){ $(this).hide() });
}
var $form; //We'll pretend this variable holds the markup for your form
$('#target').html($form); //Your form is now in the DOM
bindEvents(); //Since myFormElement1..2.. now exist, they can be interacted
//with and so calling bindEvents after the $.html call will work