iOS4.2のSafariでjQTouchのラジオボタンが動かない問題について
今、Railsを使ってiPad用のWebアプリを作成しています。
jQuery用のプラグインjQTouchを使用すると、ネイティブアプリっぽい動きをiPadのSafariで再現することができるので非常に良い感じ。
ただ、先日のiOSのバージョンアップでラジオボタンが動かなくなってしまいました。ネイティブアプリじゃないから関係ないと思ってたのにショックです。
javascriptはあんまり詳しくないんだけど、ソースをたどって修正してみました。
ちなみに
https://github.com/senchalabs/jQTouch
から最新ソースを取得しています。手元にあるのは
commit 863eee136512f37cc15a7b18416c9f6de10ba2fb
です。
さて、jqtouch.jsのtouchStartHandlerメソッドを次のように変更してみてください。
function touchStartHandler(e) { _debug(); var $el = $(e.target); //patch for iOS4.2 Safari --ここから-- if ($el.attr('type')=='radio'){ $el.attr({checked : true}); return; } if ($el.attr('type')=='checkbox'){ if ($el.attr('checked')){ $el.attr({checked : false}); }else{ $el.attr({checked : true}); } return; } //patch for iOS4.2 Safari --ここまで-- if ($el.attr('nodeName')!=='A' && $el.attr('nodeName')!=='AREA') { $el = $el.closest('a, area'); } //(以下略) }