2012-10-19 10 views
5

Używam Raphael JS 2.0 i chciałbym symulować koniec przeciągania na innym elemencie, a następnie usunąć bieżący element, który jest obsługiwany. Jeśli można to zrobić za pomocą jquery, który również byłby świetny.Jak symulować zdarzenie końca przeciągania w Raphael JS?

coś takiego:

var child = currentShift.data('endChild'); 
var newX = child.attr('x'); 
if (this !== currentShift) 
{ 
    newX = child.attr('x')-day; 
} 
currentShift.attr({y: child.attr('y'), x: newX, height: child.attr('height')}); 
$(currentShift.node).mouseup(); 
child.remove(); 

pojawiają się błędy, ponieważ element dziecko jest this w „Move” część ulicy. Ale jest używany do interakcji z currentShift.

Wiem, że istnieją inne metody uzyskania podobnego efektu, ale chciałbym wiedzieć, czy istnieje jakiś sposób naśladowania końca przeciągania dla dowolnego elementu.

+0

Może to być "var child = currentShift.data(). EndChild;' .... –

+0

@eicto Naprawdę nie dostaję tego, co sugerujesz. Element 'child' jest poprawnie ustawiony. Część, o której naprawdę się zastanawiam, to '$ (currentShift.node) .mouseup();'. Ta linia w rzeczywistości nie wywołuje zdarzenia końca przeciągnięcia dla tego elementu, a przynajmniej daje mi błędy zamiast zwalniać element CurrentShift zgodnie z życzeniem. – keyneom

Odpowiedz

1

Wygląda na to, można użyć odwołania do funkcji drag końcowego (w moim przypadku) z call()up prostu przekazując odwołanie (w moim przypadku currentShift) na swojej elementu Raphael JS. Mój kod wygląda teraz tak:

var child = currentShift.data('endChild'); 
var newX = child.attr('x'); 
if (this!==currentShift) 
{ 
    newX = child.attr('x')-day; 
} 
currentShift.attr({y: child.attr('y'), x: newX, height: child.attr('height')}); 
if (this !== currentShift) 
    up.call(child); 
else 
    up.call(currentShift); 
child.remove(); 

to nadal nie jest dokładnie tym, co chciałbym, ponieważ jeśli użytkownik trzyma trzymając myszkę w dół, próbuje zadzwonić do przeciągania Funkcja przenoszenia nawet po element został usunięty (tzn. nie wymusza zatrzymania zdarzenia przeciągania, po prostu wywołuje zdarzenie up, a następnie podaje wiele niekrytycznych błędów, ponieważ element już nie istnieje podczas próby wywołania funkcji move).

Jeśli ktokolwiek może udzielić odpowiedzi w ciągu kilku dni, jak wymusić przeciągnięcie, aby zakończyć (więc nie ma już połączeń z funkcją przenoszenia), nawet jeśli użytkownik nadal trzyma mysz w dół, będę zaakceptuj tę odpowiedź. W przeciwnym razie po prostu to zaakceptuję.

Powiązane problemy