Jag och min kollega skrev en helt egen från scratch åt Tele2, på grund av att vi inte var nöjda med de som redan fanns. De klarade inte tillräckligt många alternativ, bilder i alternativen, klarade inte IE6 eller hade något annat problem. De flesta är skrivna på ett sätt som gör det svårt att använda dem i större projekt eller då du t.ex. måste kunna ladda in data dynamiskt i dem. Resultatet blev iaf ett ca 300 rader selectbox-script som stödjer optgroups, callbacks, bilder, tangentbordet, funkar i alla webbläsare och bubblar alla events rätt i IE. Att få till god prestanda åt den var rätt lurigt, helt plötsligt kan t.ex. webbläsarens Garbage Collector slå till och lägga på en halv sekund.
Dock är det ganska många timmar bakom den, jag tror vi totalt är uppe i 40-50 h inklusive buggfixar och optimeringar. Den är byggd med filosofin att inte förändra select-elementet, utan bara skapa en stylad select, och sedan låta original-select-elementet skicka events till den stylade select-listan. Allt som händer i den stylade selecten avspeglas alltså i browserns select; vilket alternativ man väljer och att den fälls ner innan man väljer något etc. Originalelementet har visibility: hidden; och är absolutpositionerat utanför skärmen, men det är alltså i själva verket den man använder.
Min poäng är att du nog bör vara beredd på lite jobb, tyvärr finns ingen klockren lösning att tillgå ännu. Varför förstår jag inte, det borde verkligen vara någon som tagit tag i det. Kommer ingen bra lösning snart gör jag en själv.
Så, till mitt bästa tips! Här är ett mycket bra alternativ som du kan använda som startpunkt istället för att bygga från scratch:
http://v2.easy-designs.net/articles/replaceSelect/
http://v2.easy-designs.net/articles/replaceSelect2/
Använd den och anpassa om nödvändigt till dina behov. Det står att han jobbar på en del 3, som kommer att stödja optgroup och flera selectboxar. Det senare borde dock inte ta mer än några timmar att fixa. Eftersom hans kod är licensierad under Creative Commons skulle man kunna starta upp ett Google Code-projekt med hans guide som grund och sedan bygga ut och optimera den.
Denna verkar också vara en bra grund att starta med, men har buggar, det saknas callbacks och står inget om browser-stöd:
http://dblog.com.au/general/jquery-plugin-custom-styled-selec...