モバイル デバイスで Web アプリを使用する場合のボタンの応答性について、よく議論されている問題に関する別のトピック。
touchend
ラジオボタンが押されることをトリガーするイベントをリッスンしています。これにより、ボタンの応答性が向上するという問題は解決されますが、別の問題が生じます。
jQuery モバイルは、取り残されるイベントが発生したときに 、 、 などのクラスを適用しui-icon-radio-on
ますui-radio-on
。これにより、イベントが終了してもボタンがまだ押されているように見えます。これらすべてのクラスの削除と追加を両立させて、すべてが正しく見えるようにするのは、最終的にはかなりの労力になります。ui-btn-hvr-a
ui-btn-dwn-a
私の質問は、必要なクラスと属性を追加および削除するエレガントな方法を持っている人はいますか?
また
イベントトリガーに基づいて手動でスタイリングを処理するという点で、「ホイールを再作成する」ことを伴わない、これに関するより良い方法はありますか? Google の高速ボタンの方が優れたソリューションでしょうか? (統合する方法がわからない)。もっと簡単な方法はありますか?
$(document).on('pageinit pageshow', 'div:jqmData(role="page"), div:jqmData(role="dialog")', function (event) {
if($(this).hasClass('AdminSurv') && event.type=='pageinit') {
$(this).on( 'touchend', '.ui-radio', function(event) {
event.preventDefault();
/*uncheck all radios in control group to avoid multiple checks*/
var _control_group = $(this).parent();
_control_group.find("input:radio:checked").attr('checked',false);
/*check the radio*/
$(this).find('input').attr('checked', true);
/*much juggling of classes/attributes going on here
still looks like the buttons are being held down
this is a very sloppy example of my initial attempt*/
_control_group.find('label').removeClass('ui-radio-on');
_control_group.find('label').removeAttr('data-icon');
_control_group.find('label span span').removeClass('ui-icon-radio-on');
$(this).find('label').removeClass('ui-radio-off');
$(this).find('label').addClass('ui-radio-on');
$(this).find('label').attr('data-icon','radio-on');
$(this).find('label span span').removeClass('ui-icon-radio-off');
$(this).find('label span span').addClass('ui-icon-radio-on');
});
}
});