2017-04-04 6 views
0

iOS(iPhone 6 & 6s)で使用するとjQueryベースのスクリプトに問題があります。 ChromeとSafariでは同じように動作しますが、Chromeは実際にはiOSの場合はUIWebViewのラッパーであると考えられます。とにかく、これはシンプルな「星評価」システムです。ここではそれのための抜粋です:iOS jQueryで入力値が変更されず、 "addClass"呼び出しが失敗します

;(function($){ 
 
    $(document).on('click', '.star-rating-input .star', function(){ 
 
     var self = $(this); 
 
     var rating = self.data('rating'); 
 
     
 
     self.addClass('selected'); 
 
     self.siblings('.star').removeClass('selected'); 
 
     self.siblings('input[type="hidden"]').val(rating); 
 
    }); 
 
})(jQuery);
// This is irrelevant here, the only thing to know is that .selected & :focus class makes all previous .star spans change representation using :before pseudo-selector and it works on all other browsers including WP IE.
<div class="star-rating-input"> 
 
    <span class="star " data-rating="5"></span> 
 
    <span class="star " data-rating="4"></span> 
 
    <span class="star " data-rating="3"></span> 
 
    <span class="star " data-rating="2"></span> 
 
    <span class="star " data-rating="1"></span> 
 
    <input type="hidden" name="star_rating" value=""> 
 
</div>

通常、それはうまく動作しますが、iOS版(iPhone 6と6秒のSafariとChromeの両方で、私はそれがiPhoneの他のバージョンにも適用されると仮定することができますあまりにも/ iOS版):

  • クリックスパンがフォーカスを失うまで、クラスは、その星は一時的に変化している(追加されません)
  • 入力は、文字列/数値を期待したにもかかわらず、ポップでありますChrome DevToolsによるHTMLFragmentで逐次更新されます。

この問題の原因は何でしょうか?おそらく誰もがその問題の解決策を知っていますか?

答えて

2

私はこれについて完全にはわかりません。しかし、アンカー以外の要素(この場合は<span>)のクリックを検出しようとしているため、この問題に直面していると思います。以下のCSSを追加してみてくださいとiOS上でそれを確認してください。

.star{ 
    cursor:pointer; 
} 
+0

私はそれがうまくいくとは思っていませんでしたが、とにかくそれを試してみました。 – user1970395

+1

私はうまく働いています:) –

1

代わりの

var rating = self.data('rating'); 

この行の後に関数が実行に失敗する方法を見て

var rating = self.attr('data-rating'); 

を試してみて、おそらく.dataのですiOSでは実際にはサポートされていません。試してみる価値がある。

EDIT:iOSで.dataが機能し、前述のようにclickイベントが正常に発生しませんでした。

+0

正しいこととマークされたもの、つまり.data()がiOSによってサポートされているため、私はあなたのソリューションを試しませんでした – user1970395

+0

まあ、私の時その解決策の下であなたのコメントは違いがないことだったので、私はあなたがそれを試したと思った。したがって、私はclickイベントがトリガされたと仮定しました。.dataは.attrより信頼性が低い場合があります。 –

+0

私は、変更しないで古いバージョンをテストしていたことを知った直後にこのコメントを削除しました。混乱させて申し訳ありません。実際にはそれが機能していて、iOS上で.data()が実際に動作するという結論につながるので、あなたの答えは有用であるとマークしました(おそらく、あなたの答えにそれを明示的に加えることができます)。 – user1970395

関連する問題