2009-01-08 22 views
6

Mam DIV z łączem i SPANEM.jQuery backgroundColor animation

Po kliknięciu łącza renderuje listę przedmiotów za pomocą AJAX. Po kliknięciu elementu zmienia się zawartość SPANU.

Chcę wyróżnić tę zmianę, ustawiając kolor tła DIV na zielony i animując go z powrotem na biały przy użyciu jQuery.

var originalColor = elementToUpdate.parentNode.style.backgroundColor; 
    elementToUpdate.style.backgroundColor = 'green'; //lastSender.style.color; 
    jQuery(elementToUpdate.id).animate({ backgroundColor: '#ffffff' }, 1000); 

Tło SPAN zmieni się na zielone w drugiej linii, ale trzecia linia nic nie robi. Nie ma błędów ani zmian, które kiedykolwiek ...

Wszelkie pomysły?


Edit: Jak zauważył Ted Naleid w komentarzu poniżej:

Należy również pamiętać, że trzeba mieć animacje kolor zainstalowaną wtyczkę do tym pracować (http://plugins.jquery.com/project/color) jeśli nie masz go zainstalowanego, jQuery nie może animować kolorów, tylko numeryczne właściwości (co najmniej w wersji 1.3.1).

Odpowiedz

9

Nie potrzebujesz .id, jeśli już masz element. Przekazać je bezpośrednio do jQuery:

jQuery(elementToUpdate).animate({ backgroundColor: '#ffffff' }, 1000); 

Nie pojawia się błąd, ponieważ elementToUpdate.id jest ciągiem znaków, który jQuery (prawdopodobnie) interpretuje jako selektor. To po prostu selektor, który niczego nie wybiera.

Alternatywnie, można powiedzieć, aby to ważne selektora:

jQuery('#' + elementToUpdate.id).animate({ backgroundColor: '#ffffff' }, 1000); 

Ale myślę, że pierwsza forma jest korzystne, ponieważ masz już sam element.

+2

Pamiętaj też, że musisz mieć zainstalowaną wtyczkę animacji kolorów, aby to działało (http://plugins.jquery.com/project/color), jeśli nie masz jej zainstalowanej, jQuery nie może animować kolorów , tylko właściwości liczbowe (przynajmniej w wersji 1.3.1). –

+0

Dobrze, że PO nie wspomniał o tym, więc dodam go do jego pytania. –