Я использую шрифт awesome для значков и чтобы они включали событие click (touch). У меня этот HTML.
<i class="fa fa-circle-o hidden-md hidden-lg"></i>
И используйте этот jquery, чтобы идти туда и обратно.
$('body').on('click','.fa-check-circle-o, .fa-circle-o', function() {
$(this).toggleClass('fa-check-circle-o fa-circle-o');
});
Из числа выполненных операций наблюдается заметное отставание:
Задержка заставит пользователей дважды щелкнуть мышью, считая, что их первоначальный щелчок не работает. Как я могу сделать эту операцию быстрее?
(Шрифт awesome - это локальный файл, jquery - cdn, CSS - 6KB, используя Angular)
Спасибо за любые предложения.
Спасибо вам за ваши предложения. Я использовал событие click в jquery, когда я должен был использовать touchstart. Теперь он работает очень быстро!
$('body').on('touchstart click','.fa-check-circle-o, .fa-circle-o', function(e) {
e.stopPropagation(); e.preventDefault();
$(this).toggleClass('checked');
$(this).toggleClass('fa-check-circle-o fa-circle-o');
});
вы можете использовать Simple-Touch. Прочитайте документы, вы можете просто установить идентификатор для своих элементов, и он работает, и он очень оптимизирован для прикосновения к устройствам.
Это лучший селектор для добавления функции щелчка
$('.fa-check-circle-o, .fa-circle-o').on('click', function() {
$(this).toggleClass('fa-check-circle-o fa-circle-o');
});
Хотя я думаю, что ваша проблема может заключаться в загрузке шрифта awesome font, а не в скорость события touch. Просто проверьте, соответствует ли скорость события событию с предупреждением или что-то выводит на консоль. Тогда, по крайней мере, вы знаете, в чем проблема.
$('body')
первом месте может быть настоящим тормозом. Можете ли вы поместить свои<i>
в<div id="someAwesomeID"><!-- <i>'s in here --></div>
а затем использовать$('#someAwesomeID')
потому что это будет НАМНОГО быстрее, по крайней мере, с точки зрения производительности селектора.