2013-04-09 12 views
7

Używam metody dragabble z jquery ui. Jak zastosować live() na przeciąganie.Jquery Jak używać .live na przeciąganie

$("#image").draggable({ containment: [10, 150, 0, 0], scroll: false}); 

co starałem się to

$("#image").live("draggable", function() { 
.draggable({ containment: [10, 150, 0, 0], scroll: false}); 

Ale to nie działa.

Dzięki

+2

Masz na myśli [.on() '] (http: // api .jquery.com/on). ['.live()' został usunięty z jQuery 1.9] (http://api.jquery.com/live/) – Blazemonger

+2

Zobacz tę przykładową dyskusję http://stackoverflow.com/a/3349395/1193035 –

+2

FYI, .live() jest przestarzałe. Zapoznaj się .on() zamiast (http://api.jquery.com/on/) – isotrope

Odpowiedz

14

Po pierwsze jako FYI, żywa jest przestarzała, należy używać .on() jako komentarzach powyżej stanu.

Po drugie, nie będziesz w stanie zrobić tego, co musisz zrobić ze scenariuszem, ponieważ zdarzenia te nie są pieczone na(). Dlatego też sposób, że ja to podejście jest wykonać swoje przywiązanie zdarzeń wewnątrz funkcji:

function doDraggable() { 
    $(".draggable").draggable({ containment: [0, finalHeight, 0, 0], scroll: false}); 
} 

Następnie zainicjowania go, gdy dokument jest gotowy, a także gdy ajax uzupełnia:

$(document).ready(function() { 
    doDraggable(); 
}); 
$(document).ajaxComplete(function() { 
    doDraggable(); 
}); 

Można być bardziej specyficzne niż selektor dokumentów przy użyciu zdarzenia ajaxComplete, tak aby nie uruchamiał się dla co zdarzenie ajax, ale dostaję mój dryf ...

+0

Co jeśli dodaje elementy bez AJAX ? – Blazemonger

+0

Następnie d ocument.ready powinien to pokryć. Czy masz na myśli wykonywanie ajax poza jQuery? Jeśli tak, będzie musiał dołączyć wywołania zwrotne do tych konkretnych wywołań ajaxowych, aby ponownie zainicjować załączniki. –

+1

Mam na myśli dodawanie elementów do DOM w odpowiedzi na zdarzenie użytkownika, takie jak kliknięcie przycisku, po prostu przez '$ ('body') .endend (" div ")' lub coś podobnego. – Blazemonger

Powiązane problemy