2012-04-03 8 views
5

Ho un dubbio che sicuramente è facile da realizzare ma non riesco a trovare come farlo. È possibile ricaricare un plug-in JQuery senza aggiornare l'intera pagina in modo che possa aggiornare i valori? Ho letto domande simili ma sono mirate a plug-in specifici! Mi piacerebbe sapere se qualcuno conosce un modo "generico" per farlo, quindi può essere usato in molti plugin JQ. Ci dovrebbe essere un modo per farlo sicuramente ...Come può un plugin JQuery essere ricaricato/ridisegnato/aggiornato per aggiornare i suoi valori?

In ogni caso, più in particolare, sto facendo questa domanda per ricaricare JQuery File Tree ho questo:

JAVASCRIPT

$(document).ready(function() { 
    $('#fileTree').fileTree({ 
     root: '/some/path/to/somewhere/', 
     script: 'js/jqueryFileTree-1.01/connectors/jqueryFileTree.php', 
     folderEvent: 'click', 
     expandSpeed: 1000, 
     collapseSpeed: 1000, 
     multiFolder: false, 
     loadMessage: 'Loading...' 
     }, function(file) { 
      relativePath=file.replace("/some/path",""); 
      aFunction(relativePath, file); 
     }); 
    }); 

HTML

<div id="fileTree" class="fileTree"></div> 

Ad un certo poin t, ho il codice AJAX + PHP che mi consente di eliminare il file selezionato. Funziona bene! MA il file che è stato cancellato è ancora mostrato nell'albero dei file. Se aggiungo un window.location.reload() al mio evento di successo in quella funzione, ovviamente l'intera pagina viene ricaricata e la mia struttura mostra i file effettivi nella cartella come previsto.

Domanda: C'è un modo per ricaricarlo senza aggiornare l'intera pagina ???

Si prega di notare l'autore di questo plug-in mi ha detto su Twitter:

@metafaniel Il problema è che non è più utilizzato in uno qualsiasi dei nostri progetti. È un vecchio, vecchio script che ha bisogno di una revisione. via @abeautifulsite

@metafaniel Dovrai aggiungerlo tu stesso. Poiché il plug-in è molto vecchio, , non ha un'API completa. via @abeautifulsite

Non ho più tempo in ufficio per scrivere nuovamente il mio codice con un altro plug-in, devo finire questo! Qualche idea? Per favore aiutatemi, GRAZIE =)

+0

In genere, è sufficiente richiamare il plug-in con gli stessi parametri per reimpostarlo/ricaricarlo. – Blazemonger

+0

Svuota il parent 'div' (' # fileTree') e richiama di nuovo il plugin – js1568

+1

Beh, sì, CON IL CORSO Grazie ad entrambi. Sì, è un modo che ho fatto prima, ma deve esserci un altro modo ... Ho il codice Javascript in un file JS ... Forse c'è del codice per eseguire il codice .js direttamente? Conosci un modo per farlo? Grazie per il tuo aiuto =) – Metafaniel

risposta

0

Bene, se l'OP chiede un comando di plugin diretto per farlo, temo che possa non esistere. Ecco la mia soluzione, che funziona abbastanza bene. Quello che fai è avvolgere il vostro vuoto <div id="jstree"></div> in un div genitore, qualcosa di simile:

<div id="file-tree-holder"> 
    <div id="jstree" ></div> 
</div> 

Poi, nel vostro javascript, appena prima di un'istanza vostro plugin, si cancella il contenuto del div genitore, e poi riscrivere il div target all'interno del div padre, in questo modo:

 $('#file-tree-holder').html(''); 
     $('#file-tree-holder').html('<div id="jstree" ></div>'); 
     $('#jstree').fileTree({ 
      script: '/ajax/file_tree2/' + path, 
      multiFolder: true, 
      expandSpeed: 250, 
      collapseSpeed: 250, 
      loadMessage: 'Loading...' 
     }); 

... e funziona piuttosto bene.