2013-02-11 14 views
11

Mam tę małą wtyczkę, która powoduje, że element pulsuje trzy razy, wywołując funkcję .blink(). Próbuję go działa na element LI po został przeciągnięty i upuszczone za pośrednictwem jQuery .sortable(); ale wydaje się, że nie działa w tym kontekście.Wywołanie funkcji niestandardowej po jQuery sortable();

$(function() { 
$("#sortable").sortable().blink("update-value", 3, 350); 
$("#sortable").disableSelection(); 
}); 

kod migowy

$.fn.blink = function (cls, times, delay) { 
var $self = this.removeClass(cls); 
clearTimeout($.fn.blink.handler); 
! function animate(times) { 
    if (times) { 
     $self.toggleClass(cls); 
     $.fn.blink.handler = setTimeout(function() { 
      animate(times - 1); 
     }, delay); 
    } 
}(times * 2); 
return this; 
}; 

Odpowiedz

35

Jeśli używasz sortable wtyczkę jQueryUI, a jeśli chcesz, aby element migający który został przeciągnięty (posortowane), może być należy użyć wywołania zwrotne, które są już dostępne w sortable API:

Podczas konfigurowania sortable można dać zwrotnego dla zdarzenia change:

$(".selector").sortable({ 
    change: function(event, ui) {} 
}); 

API mówi: „To zdarzenie jest wywoływane podczas sortowania, ale tylko wtedy, gdy pozycja DOM zmieniła”

Można również przekazać wywołania zwrotnego dla zdarzenia aktualizacji:

$(".selector").sortable({ 
    update: function(event, ui) {} 
}); 

API mówi: „To Zdarzenie jest wyzwalane, gdy użytkownik zatrzymał sortowanie, a pozycja DOM zmieniła się "

W twoim przypadku powinieneś użyć funkcji oddzwaniania aktualizacji i wywołać metodę blink do swojego elementu.

Uwaga: przeciągnij i spadł elementem powinny być dostępne w obiekcie ui, użyj console.debug sprawdzenie zawartości ui

+0

działa jak czar, dobrze wyjaśnione – Timo

Powiązane problemy