2013-04-04 20 views
8

Jak można wywołać funkcję po zakończeniu change() zdarzenia?wywołanie zwrotne zdarzenia jquery change

na przykład coś takiego: (wiem jQuery nie ma metody wywołania zwrotnego jako domyślne)

$('#element').change(function(){ 
        // do something on change 
        // $('#milestonesSelect').multiselect({ minWidth: 120 , height : '200px' ,selectedList: 4 }).multiselectfilter(); 
         // some animation calls ... 
         // ... 
        }, function(){ 
        // do something after complete 
         alert('another codes has completed when i called'); 
        } 
        ); 

to możliwe, aby wywołać oddzwanianie po wszystkie kody dotyczące metody zmiany zrobione, z wyjątkiem połączenia kompletne wywołanie zwrotne dla wszystkich funkcji na nim?

muszę coś zrobić po zdarzeniu zmiana zakończyła

Shall muszę ustawić kolejność metod w zmianie obsługi?

+0

Wystarczy uruchomić kod wewnątrz tego zdarzenia zmiany. Nie jest wymagane żadne oddzwanianie. – elclanrs

+1

Przez "zrobić coś po ukończeniu" masz na myśli, gdy pierwsza funkcja została zakończona lub po zakończeniu zdarzenia 'change'? –

+0

po tym, jak zdarzenie zmiany zakończyło się – Alireza41

Odpowiedz

9

Prawdopodobnie można wykorzystać event bubbling i zarejestrować wywołania zwrotnego w document.

$(document).on('change', '#element', function(){ 
    console.log('after all callbacks') 
}); 

Demo: Fiddle

+3

A jeśli twoje wydarzenia są już uruchomione w ten sposób? to znaczy. 'jQuery ('# myelement'). on ('change', 'select, input', function() {... do stuff});' W jaki sposób załączyłbyś wywołanie zwrotne po wywołaniu tych zmian? – pspahn

+0

link do bulgotania zdarzeń nie działa w Twojej odpowiedzi. Zaktualizuj do późniejszego wykorzystania. – vivek

0

Jeśli dobrze rozumiem Twoje pytanie, to wykona kod tylko raz po zdarzeniu zmiana wypala:

var changed = false; 

$('#element').on('change', function() { 
    if (!changed) { 
     // do something on change 
     changed = true; 
    } 
    } 
}); 
+0

, jak powiedziałeś, "to wykona kod tylko jeden raz po wystrzeleniu zdarzenia zmiany", ale muszę coś zrobić po tym, jak zdarzenie zostało zakończone, a nie zostało wywołane. Nie chcę tego robić w tym samym czasie z kolejnymi egzekucjami. – Alireza41

2

Właśnie spędziłem trochę czasu na zwiedzanie tego sobie i postanowił przedstawić moją odpowiedź na to pytanie, jak również. To nie wykorzystuje żadnej z odroczonych metod jQuery, co może być lepszym rozwiązaniem. Nie zbadałem ich wystarczająco, by mieć opinię w tej sprawie.

$("#element").change(function() { 
    handler().after(callBack($("#element").val())); 
} 

function handler() { 
    alert("Event handler"); 
} 

function callBack(foo) { 
    alert(foo); 
} 

Demo: JSFiddle

Powiązane problemy