表題のようなバグに遭遇し、結構苦労したのでメモです。
<div class="parent">
<select>
<option>1</option>
<option>2</option>
</select>
</div>
となっている場合に、jQueryで、
$(".parent").hide()
$(".parent").show()
していると、2回目以降で表示が変更されない場合がありました。 結構謎な現象でしたが、 http://tachesimazzoca.blogspot.jp/2011/12/android-mobile-safari-select.html を参考に、
$(".parent").hide() #=> $(".parent").attr("style","display:none")
$(".parent").show() #=> $(".parent").attr("style","display:block")
と変更することで動きました。 なぜこれで動くのかは不明です。
上記の設定をし、animationで画面を表示したのちスライドインで表示していましたが、結局同じ問題が出てきたので、animationを使わずスライドインさせない事で問題は解決。
//$(.parent).attr('style', 'display;block; right:400px;').animate('right:0px', 550);
=> $(.parent).attr('style','display:block;');