Como adicionar o Plugin escolhido ao div CSS criado / clonado dinamicamente?
O Plugin Escolhido para jQuery (encontrado aqui:http://harvesthq.github.com/chosen/ ) adiciona funcionalidade extra para selecionar elementos HTML. Eu posso adicionar a funcionalidade aos elementos iniciais carregados na página com o seguinte código:
<code>$(document).ready(function(){ $(".chosenProperties").data("placeholder","Select properties...").chosen(); $(".chosenType").data("placeholder","Type...").chosen(); $(".chosenInstance").data("placeholder","Instance...").chosen() </code>
Isso funciona. Todas as três dessas classes de elementos selecionados aparecem em um div chamado #newGroup. Há um botão na página que "adiciona" um novo grupo, que clona o div #newGroup e o adiciona logo abaixo do primeiro.
Ele contém os mesmos elementos. No entanto, quando tento adicionar a funcionalidade escolhida aos itens selecionados no div clonado, eles são congelados. A interface parece a mesma que a primeira, então Chosen está sendo carregado, mas quando eu clico, nada acontece. Aqui está o código:
<code> $( '#swl-add-group-button' ).click( function() { //addGroupToGUI(); createClassAddRow(); } ); var rowNum = 0; function createClassAddRow() { rowNum++; newRow = jQuery('#newGroup').clone().css('display', ''); newHTML = newRow.html().replace(/0/g, 1); newRow.initializeJSElements(); newRow.html(newHTML); newRow.initializeJSElements(); jQuery('#mainTable').append(newRow); addGroup(newRow); } jQuery.fn.initializeJSElements = function (){ this.find(".chosenProperties").each( function() { alert('test'); if($(".chosenProperties").data("placeholder", "Select properties...").chosen()){ alert('test2'); } }); this.find(".chosenType").each( function() { jQuery(this).data("placeholder","Type...").chosen(); }); this.find(".chosenInstance").each( function(){ jQuery(this).data("placeholder", "Instance...").chosen(); }) } </code>
Ambos os alertas, test e test2, aparecem. Então eu acho que o jQuery está sendo carregado, mas não está funcionando por algum motivo. Além disso, não tenho certeza se isso faz a diferença, mas quando eu passar o mouse sobre os elementos de seleção do div clonado, ele diz: javascript: void (1) ao passo que quando eu passar o original ele diz javascript: void (0).