2011-10-23 16 views
7

Sto usando jquery uniforme su uno dei progetti su cui sto lavorando. Dal momento che questo è il pannello di amministrazione, non ho davvero un'opzione da mostrare. Spiegherò il mio problemaAggiornamento uniforme Jquery non funziona

Quello che sto cercando di fare è abbastanza semplice. Sto aggiungendo alcuni elementi del modulo (come seleziona, casella di controllo, inserimento del testo) alla pagina con Ajax.

Ogni singola cosa funziona eccetto il re-styling di quegli elementi del modulo aggiunti dinamicamente.

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

Chiunque abbia riscontrato problemi simili? Anche le mie funzioni onClick, onChange funzionano senza problemi (elementi del modulo aggiunti dinamicamente), è giusto, $.uniform.update(); non sembra funzionare.

Ho pensato che l'elaborazione dei dati potrebbe richiedere più tempo quindi $ .uniform.update(); viene chiamato prima che i dati vengano elaborati, quindi ho provato $.ajax con async: false senza fortuna.

Sarò felice se qualcuno che ha riscontrato questo problema o che conosce la soluzione potrebbe aiutarmi con questo problema.

Grazie in anticipo.

risposta

14

Quando viene chiamato per la prima volta $.uniform(), raccoglie tutti gli elementi specificati in una matrice interna di elementi interessati. Quando chiami $.uniform.update() semplicemente ripristina quegli elementi che erano già stati raccolti.

Per aggiungere ulteriori elementi, potrebbe essere necessario chiamare di nuovo $.uniform(), passando un selettore che identifica solo i nuovi elementi aggiunti in modo dinamico.

+0

Grazie per la rapida risposta. Sfortunatamente non ha funzionato. – Revenant

+3

Non ho idea del perché ma questo ha funzionato $ ("seleziona, input: checkbox, input: radio, input: file"). Uniform(); $ .uniform.update(); senza .update() continua a non funzionare e non capisco perché devo usare .update() dopo aver aggiunto elementi alla divisa. – Revenant

+0

$ .uniform.update(); ha funzionato per me :) grazie –

5

per carico() se fix promblem

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

Grazie - Stavo avendo problemi a uniformare lo stile di un elemento select dopo aver usato .load() e questo è stato completamente risolto per me. – MikeH

1

Un'altra soluzione potrebbe essere questo

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

200 o un numero superiore può avere bisogno.

+0

Questa soluzione è effettivamente consigliata per la lettura uniforme e [relativo numero 270] (https://github.com/pixelmatrix/uniform/issues/270) –

+0

Questa soluzione ha funzionato. Nel mio caso la casella di controllo era all'interno del menu a discesa – Prasanth

1

Hai provato?

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

Nel mio caso, ha risolto il problema.

la vecchia versione uniforme potrebbe avere il problema come hai.

0

Utilizzare questo $ ('. ElementClass'). Uniform();