2013-02-19 13 views
8

Podczas pracy z jQuery-UI 1.8.2 pracowałem z wtyczką przeciągalną, a następnie zmieniłem ją na 1.10.1. Główną różnicą było to, że znalazłem się włączanie i wyłączanie wtyczki, potrzebowałem już używać:jQuery-UI przeciągalny błąd "nie można wywołać metod przed procesem init", aktualizując do wersji 1.10.1

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

ale może po prostu użyć

$this.draggable('disable'); 

Ale potem zdałem sobie sprawę, że jest inny problem. Otrzymuję ten błąd, który bałagan cały mój program, a ja nie wiem jak to naprawić:

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

Aby go naprawić, I zapewnił, że zawsze zadzwonić $this.draggable('enable'); przed jakimkolwiek dalszym opcji, ale nie zrobił” t zrobić różnicę. Jaki jest problem?

+2

Twój błąd mówi, że '$ this.draggable ('enable');' jest wywoływane przed '$ this.draggable(); '. Czy sprawdziłeś przepływ wykonania? – LeGEC

+0

Tak, popełniłem błąd w zrozumieniu przepływu, udało mi się upewnić, że zrobiłem '$ this.draggable()'. – user961627

Odpowiedz

13

Znaczenie Twojego błędu: $this.draggable('enable'); jest wywoływane przed $this.draggable();.

Sprawdź przebieg wykonywania programu progam: upewnij się, że rzeczywiście zainicjowałeś wtyczkę (np. O nazwie $this.draggable();), zanim spróbujesz coś z nią zrobić.

+1

To nie jest tak naprawdę odpowiedź na pytanie. To mylące pytanie retoryczne. Myślę, że powinno się przeformułować odpowiedź bardziej bezpośrednio. – Goodword

1

Miałem podobny problem podczas aktualizacji z jQuery 1.6.1 do 1.9.1

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

rzucił "nie można wywołać metody na przeciągany Przed inicjalizacją"

zmodyfikowany:

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

Przesyłanie na wypadek, gdyby ktoś mógł zobaczyć to w ten sposób.

3

Rozszerzając co LeGEC powiedział ...

$this.draggable(); jest wywoływana przed $this.draggable('enable');

Dla mnie rozwiązaniem byłoby łańcucha zdarzenie tak ...

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

Pierwszy deklarowania że $ to jest przeciągalne, a następnie deklaruje, że jest odrzucone