Código Javascript:
Ver original
$(".datos").chosen(); // Clase de cada input que quiero afectar con Chosen var contenedor = $("#contenedor"); var i = $(".capa").size() + 1; $("#agregar").live("click", function() { // Enlace que sirve de botón para agregar un nuevo bloque de inputs $('Mi HTML...').appendTo(contenedor); i++; return false; });
El problema: al presionar el botón #agregar, ciertamente se creaba el nuevo HTML, pero sin las funciones del plugin Chosen. Intenté aplicando .live() en las maneras recomendadas para este caso, al igual que otras funciones, todo sin resultado.
La solución:
Descargué el plugin Livequery y lo instalé de primero, justo después de jquery.js. Cambié la función -justo como la ven abajo- y refresqué la página pensando que no iba a resultar a la primera (porque con jQuery nada me resulta a la primera) y paf! el cambio se dio.
Antes:
Código Javascript:
Ver original
$(".datos").chosen();
Después:
Código Javascript:
Ver original
$(".datos").livequery(function() { $(this).chosen(); });
A partir de entonces, he usado dicho plugin de forma exitosa para este tipo de situaciones, cuando quiero que los elementos creados de forma dinámica sean arropados por X función. Lo recomiendo.