So here is my code:
$(document).ready( function() {
$('#form').bind('change', function(){
$.ajax({
type: 'get',
url: 'api.php',
data: 'task=getdirs&formname='+$('#form').attr('value'),
dataType: "text",
success: function (html){
$('#chdir').html(html);
$('#chdir select').bind('change', getDirs());
}
});
});
function getDirs(){
}})
#form here has a <select> element. The ajax call returns a piece of html with a new <select> element.
It works nice: in the #chdir div I get a new dropdown element. But the event inside the success part fires only once. Then this event does not work anymore at all.
What can I do to make the newly created <select> element work in the same way as the first?
You are invoking the
getDirsfunction directly on thebindmethod call, you should only do it if this function returns another function, but I think that’s not the case.Change:
To:
Or if you are using jQuery 1.4+, you can bind the
changeevent with thelivemethod only once, and you will not need to re-bind the event after that: