Use .filter() to protect against jQuery's lack of escaping

Similar to 69bad2a0, this works around the inability to guaranteedly
escape characters in jQuery attribute selectors.  For example, this
would cause categories with spaces or . in them to display no
sub-options when those options were rendered as a list.

Instead of shoving an unknown set of characters after the starts-with
selector, use .filter() to iterate over the possibilities and check for
starts-with using .indexOf().
Merge branch '4.2/cascaded-non-select' into 4.2-trunk