2011-10-23 9 views
7

Estoy usando jquery uniform en uno de los proyectos en los que estoy trabajando. Como este es el panel de administración, realmente no tengo la opción de mostrar. Explicaré mi problemaJquery Uniform Update no funciona

Lo que intento hacer es bastante simple. Estoy agregando algunos elementos de formulario (como seleccionar, casilla de verificación, entrada de texto) a la página con ajax.

Todo funciona, excepto volver a diseñar los elementos de formulario añadidos dinámicamente.

function step2() { 
    $.post(siteUrl + "includes/ajax/members/add-subscription.php?do=step2", $("#selectedSubscribers").serialize(), function(data) { 
     $('.step2_content').html(data); 
     $.uniform.update(); 
    }); 
} 

¿Alguien ha experimentado un problema similar? Incluso mis funciones OnClick, onChange funcionan sin problemas (elementos de formulario añadidos dinámicamente), es simplemente, $.uniform.update(); parece que no funciona.

Pensé que procesar los datos podría llevar más tiempo, por lo que $ .uniform.update(); se llama antes de que se procesen los datos, así que probé $.ajax con async: false sin suerte.

Estaré encantado si alguien que haya experimentado tal problema o que sepa la solución podría ayudarme con este problema.

Gracias de antemano.

Respuesta

14

Cuando se llama por primera vez a $.uniform(), recoge todos los elementos especificados en una matriz interna de elementos afectados. Cuando llamas al $.uniform.update(), simplemente rediseña aquellos elementos que ya fueron recolectados.

Para agregar elementos adicionales, puede necesitar llamar de nuevo al $.uniform(), pasando un selector que identifica solo los elementos nuevos agregados dinámicamente.

+0

Gracias por su rápida respuesta. Lamentablemente no funcionó. – Revenant

+3

No tengo idea por qué pero esto funcionó $ ("seleccionar, entrada: casilla de verificación, entrada: radio, entrada: archivo"). Uniforme(); $ .uniform.update(); sin .update() todavía no funciona y no entiendo por qué tengo que usar .update() después de agregar elementos al uniforme. – Revenant

+0

$ .uniform.update(); funcionó para mí :) gracias –

5

para la carga() si fix promblem

$('#dialog').load(url + ' #forload', function() {$('#dialog').find('select').uniform(), $('#dialog').find('input:checkbox').uniform()}) 
+0

Gracias - Estaba teniendo problemas para obtener un uniforme para darle un estilo a un elemento seleccionado después de usar .load() y esto me lo arregló por completo. – MikeH

1

Otra solución puede ser este

setTimeout("$('.uniform_element').uniform();",200); 

200 o un número más alto pueden necesitar.

+0

Esta solución se recomienda en realidad por la lectura uniforme y [número relevante # 270] (https://github.com/pixelmatrix/uniform/issues/270) –

+0

Esta solución realmente funcionó. En mi caso, las casillas de verificación estaban dentro desplegable – Prasanth

1

¿Has probado esto?

$.uniform.update("#select_element_id"); 

En mi caso, se solucionó el problema.

la versión antigua uniforme puede tener el problema que usted tiene.

0

Usa esto $ ('. ElementClass'). Uniform();