I just came across this and instead of cloning the entire select over and over I just replaced the options that need to be hidden with span
elements and hiding the spans ( though the browser didnt visually show them anyway, I think ) – you may need to change your code ( if complex ) to iterate through the spans for complex logic.
The spans store a reference to the option
and replace themselves with it when they need to be shown.
This code can obviously be refactored and prettified.
http://fiddle.jshell.net/FAkEK/12/show/
EDIT #2 ( USE THIS INSTEAD ): It occurred to me that instead of doing all this clone/reference/replace crap, just wrap the option with a span, hide the span, and on show just replace the span with the option again..