2013-02-19 4 views
8

Stavo lavorando bene al plugin trascinabile mentre si utilizza jQuery-UI 1.8.2, quindi sono stato modificato in 1.10.1. La differenza principale che ho trovato era che in attivazione e disattivazione di plug-in, non ho più bisogno di usare:Errore trascinamento jQuery-UI 'non è possibile chiamare metodi prima di init', in aggiornamento alla versione 1.10.1

$this.draggable('option', 'disabled', true); 

ma potrebbe semplicemente utilizzare

$this.draggable('disable'); 

ma poi ho capito c'è un altro problema. Ottengo questo errore, che scombina tutto il mio programma, e non so come risolvere il problema:

Error: cannot call methods on draggable prior to initialization; attempted to call method 'enable'

per risolvere il problema, ho assicurato che chiamo sempre $this.draggable('enable'); prima di qualsiasi altre possibilità, ma didn' t fare la differenza Qual è il problema?

+2

Il tuo errore dice '$ this.draggable ('enable');' viene chiamato prima di '$ this.draggable(); '. Hai controllato il flusso di esecuzione? – LeGEC

+0

Sì, ho commesso un errore nel comprendere il flusso, sono stato in grado di assicurarmi di aver fatto '$ this.draggable()'. – user961627

risposta

13

Il significato del tuo errore è: $this.draggable('enable'); viene chiamato prima dello $this.draggable();.

Controlla il flusso di esecuzione del tuo programma: assicurati di aver effettivamente inizializzato il plug-in (ad esempio: $this.draggable();) prima di provare a fare qualcosa con esso.

+1

Questa non è davvero una risposta alla domanda. È una domanda retorica confusa. Penso che dovrebbe essere riformulato per essere una risposta più direttamente. – Goodword

1

Ho avuto un problema simile durante l'aggiornamento da jquery 1.6.1 a 1.9.1

var tr$ = $('<tr>', { draggable: 'true' }); 

gettato "non può chiamare metodi su draggable prima dell'inizializzazione"

modificati per:

var tr$ = $('<tr>'); 
if(!('draggable' in document.createElement('span'))) { 
    //handle old browsers     
} else { 
    tr$.attr('draggable', 'true'); 
} 

Inserimento nel caso in cui aiuti qualcun altro a vederlo in questo modo.

3

espansione su quello che ha detto ... LeGEC

$this.draggable(); viene chiamato prima $this.draggable('enable');

Per me la soluzione potrebbe essere quella di catena l'evento come questo ...

$this.draggable().draggable('disable'); 

Prima dichiarando che $ questo è trascinabile, quindi dichiarare che è disabilitato

Problemi correlati