He leído por aquí y por aquí que estos métodos son usados adecuadamente en diferentes versiones de jQuery. Bueno, al grano en forma ordenada:
1. Tengo un objeto que creo dinámicamente.
2. Tengo la versión 1.8.3.
3. No puedo "capturar" con "on" el evento "change" del formulario creado dinámicamente.
4. Si puedo "capturar" con "live" el mismo evento "change".
A qué se debe, ya que es incongruente?
El HTML:
Código PHP:
<div id="tipo-user">
<div class="control-group">
<label class="control-label" for="tipo">Tipo</label>
<div class="controls">
<select name="tipo" id="tipo"></select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="usuario">Usuario</label>
<div class="controls">
<select name="usuario" id="usuario"></select>
</div>
</div>
</div>
Código PHP:
$(document).on("ready", function(){
$("#manual").on("click", function(){
if($(this).is(":checked")){
$("#tipo-user").html('<div class="control-group"><label class="control-label" for="usuario">Usuario</label><div class="controls"><input type="text" name="usuario" id="usuario" placeholder="Usuario" required></div></div>');
}else{
$("#tipo-user").html('<div class="control-group"><label class="control-label" for="tipo">Tipo</label><div class="controls"><select name="tipo" id="tipo"></select></div></div><div class="control-group"><label class="control-label" for="usuario">Usuario</label><div class="controls"><select name="usuario" id="usuario"></select></div></div>');
cargarTipo();
}
});
$("#tipo").live("change", function(){
var id_tipo = $(this).val();
cargarUsuario(id_tipo);
alert("Hola tipo");
})
cargarTipo = function(){
$("#tipo").load("sistema/inc/cargartipo.inc.php");
alert("Hola mundo tipo")
}
cargarUsuario = function(id_tipo){
if(id_tipo!="#"){
$("#usuario").load("sistema/inc/cargarusuarios.inc.php?id_tipo="+id_tipo);
}else{
$("#usuario").html("");
}
}
cargarTipo();
});