2011-10-15 10 views
8

qualcuno può spiegare, con un esempio se possibile, come caricare il contenuto dinamico all'interno di un div di iscroll e assegnargli una nuova altezza?fare iscroll al lavoro quando si carica dinamicamente un div

Posso farlo funzionare ma non riesco a controllare l'altezza della pergamena per il nuovo contenuto.

Sono nuovo di tutto questo e non ho idea di dove iniziare.

ecco cosa su cui sto lavorando:

http://homepage.mac.com/jjco/test/index7.html

quando la pagina viene caricata che si vede la barra di scorrimento dove non c'è contenuto ... click su stampa/damm (mostra l'altezza che in origine impostato per questo contenuto) facendo clic su print/fcbarcelona (mantiene la stessa altezza e posizione della pergamena usata in precedenza) poiché si vede che non funziona come dovrebbe. ovviamente, non voglio che lo scroll sia lì quando non è necessario.

qualsiasi aiuto sarebbe molto apprezzato.

risposta

3

provare questo, quando si inseriscono i nuovi dati in iScroll fare questi passaggi

//myScroll is a global variable you initialize iScroll on 
myScroll.destroy(); 
myScroll = null; 
loaded();//this is a functions where you have have your iScroll initializer 
+0

grazie per questo, ha funzionato perfettamente per me. – JasonMHirst

+0

* Dev'essere distrutto() –

14

E 'meglio usare il metodo di aggiornamento() in iScroll, che ricalcolare l'altezza.

myScroll.refresh(); 
3

ho avuto un problema simile, e proprio refresh() non ha aiutato, in modo non ha aiutato distruggere e ricreare iScroll. Nel mio caso stavo caricando molti elementi in iScroll div. Ciò che ha risolto il problema è setTimeout(). Come MASTERING THE REFRESH() METHOD, aggiungendo anche 0ms a setTimeout() si risolverebbe un sacco di problemi. Nel mio caso era 500ms. =

qui è esempio di codice:

var myScroll; 

    function createIScroll(){ 
    myScroll = new iScroll('wrapper'); 
    } 

    function iScrollRefresh(){ 
     setTimeout(function(){ 
     myScroll.refresh(); 
     }, 500); 
    } 
$ajax(){ 
//receiving data 
} 
function someFunction(){ 
    //dynamic content is created 
    iScrollRefresh(); 
} 

mio problema era che refresh() funzione è stata eseguita prima che il contenuto è stato inserito nel DOM, in modo da aumentare il timeout aiutato. Spero che aiuti i principianti come me.

+0

uguale per me, il refresh da solo non ha funzionato, ma setTimeout ha risolto il problema, grazie. – Yasmine

0

Per guardare altezza cambia:

setInterval(function() { 
    var newScrollerHeight = $scroller.innerHeight(); 

    if (newScrollerHeight !== prevScrollerHeight) { 
     prevScrollerHeight = newScrollerHeight; 
     myScroll.refresh(); 
    } 
}, 500); 
-1

Date un'occhiata a iScroll4
In iscroll.js, vedo un'opzione sperimentale: checkDOMChanges: false, // sperimentali
È possibile attivare e usarlo.

Problemi correlati