es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Adjunta Select2 con el onClick() de jQuery

Estoy intentando adjuntar Select2 con onClick() de jQuery. Mi código HTML es <td class="volunteer" id="47">Bob Smith y admin</td>. Mi código de jQuery es el siguiente.

(function($) {
    $(document).ready(function () {
        $(".volunteer").on("click", function () {
            $(this).html(`<select class="js-example-basic-multiple" name="states[]" multiple="multiple">
                <option value="AL">Alabama</option>
                <option value="WY">Wyoming</option>
            </select>`);
        });
        $('.js-example-basic-multiple').select2();
    });
})(jQuery)

Pero esto no está funcionando.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con el código de jQuery parece estar en el orden de ejecución. El código intenta adjuntar Select2 al elemento select antes de que se cargue en el DOM a través del evento onclick. Por lo tanto, el elemento select aún no está disponible para que Select2 se adjunte a él.

    Para resolver este problema, necesitamos inicializar Select2 después de que el elemento select se cargue en el DOM. Una forma de lograr esto es agregando la inicialización de Select2 dentro de la función del evento onclick como se muestra a continuación:

    (function($) {
        $(document).ready(function () {
            $(".volunteer").on("click", function () {            
                $(this).html(`<select class="js-example-basic-multiple" name="states[]" multiple="multiple">
                    <option value="AL">Alabama</option>
                    <option value="WY">Wyoming</option>
                </select>`);
    
                $('.js-example-basic-multiple').select2(); // Inicializar Select2 después de que el elemento select se haya cargado 
            });
        });
    })(jQuery)
    

    Con esta modificación, la inicialización de Select2 se ejecutará solo después de que el elemento select se haya cargado en el DOM, y esto debería resolver el problema.

Comments are closed.