2010-04-18 18 views
11

Mam niestandardową wtyczkę jQuery, która wiąże zdarzenie change z elementem formularza, w tym przypadku z niektórymi elementami input. Zdarzenie change służy do wskazania innym składnikom, które zaszły zmianę.Wiązanie wielu zdarzeń w jQuery

Działa to tak, jak powinno.

Jednak spotkałem się z koniecznością związania dodatkowego zdarzenia change z tymi samymi elementami input - aby dodatkowe komponenty mogły działać na wydarzenie. Nie chcę zastępować wtyczki change, po prostu uruchom dodatkową funkcję później.

Czy istnieje sposób powiązania wielu zdarzeń w jQuery lub, jaka jest najlepsza metoda osiągnięcia tego?

Odpowiedz

19

Można powiązać wiele procedur obsługi dla tego samego zdarzenia. Powiąż drugą zmianę tak jak zwykle:

​<input type="text" id="a" />​​​​​​​​​​​​​​​ 

​$("#a"​).change(function() { alert("1"); }); 
$("#a").change(function() { alert("2"); });​ 

$("#a").change(); // alerts 1, then 2 
+1

Ah cheers. Miałam wrażenie, że zrobienie tego zastąpiłoby pierwszą funkcję. –

+0

Czy ta sama logika ma zastosowanie do używania 'bind()' z obiektem, zamiast każdej pojedynczej funkcji? Ponieważ nie miałem tego samego sukcesu przy użyciu 'bind()'. –

+0

'change' jest tylko skrótem do' bind', więc powinno działać. jakie masz problemy z używaniem bind? stworzyłem mały przykład z przekazaniem odwołania funkcji do wiązania - http://jsfiddle.net/B9ggj/ – Anurag

6

Stos zdarzeń w jQuery. Jeśli tak:

<input type="button" value="Press me"> 

oraz:

$(":button").click(function() { 
    alert("click"); 
}).click(function() { 
    alert("click 2"); 
}); 

zarówno będzie ogień. Po prostu połącz kolejne wydarzenie z odpowiednimi elementami. Nie zastąpi pierwszego.

Powiązane problemy