Koniecznie zrób tak jak mówi dzek69. To, chcesz zrobić -- połączenie mouseover i mouseout, przy których zmieniasz CSS -- to klasyczny przykład na użycie pseudoklasy :hover
w CSS-ach. Tak, można jej użyć nawet na elementach td
lub jakichkolwiek innych. Zadziała od IE7 wzwyż.
JAKO CIEKAWOSTKE powiem, że masz rację co do przyczyny problemu. Chodzi o to, że przypisujesz zdarzenia mouseover/mouseout tylko do tych elementów, które w danej chwili istnieją -- a nie tych, które będą wstawione w przyszłości.
Twój problem rozwiązałaby tzw. delegacja zdarzeń. Czyli -- w starszych jQuery -- funkcja .delegate()
, lub w nowszych funkcja .on()
.
Wyglądałoby to jakoś tak:
$('#listaSzkolen').on({
mouseover: function() {
$(this).costam();
},
mouseout: function() {
$(this).costam();
}
}, '.id_szkolenia');
Jak to działa? Ano mówimy elementowi #listaSzkolen
, by przechwytywał wszystkie zdarzenia mouseover oraz mouseout, które zajdą na jakimkolwiek elemencie wewnątrz niego. Na końcu podajemy jednak selektor .id_szkolenia
, który oznacza, że interesują nas tylko te zdarzenia, które zaszły na elemencie o klasie id_szkolenia
.
Tutaj nie ma problemu, bo w momencie gdy wywołujemy funkcję .on()
, deklarujemy, że wszystkie zdarzenia, które zajdą wewnątrz niego, mają być oddelegowane do niego. W tym momencie jQuery nie sprawdza nawet jakie są tam elementy. Dopiero gdy wystąpi zdarzenie mouseover
to jQuery sprawdzi, czy zostało tak naprawdę wywołane na elemencie o klasie .id_szkolenia
. To, że element ten doszedł do tabeli dopiero przed chwilą w niczym nie przeszkadza.