Оптимизация кода для более быстрого реагирования на сенсорное событие

0

Я использую шрифт 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');
});

Из числа выполненных операций наблюдается заметное отставание:

  1. Обнаружение события кликов
  2. Класс коммутатора
  3. Найти CSS
  4. Перерисовать CSS

Задержка заставит пользователей дважды щелкнуть мышью, считая, что их первоначальный щелчок не работает. Как я могу сделать эту операцию быстрее?

(Шрифт awesome - это локальный файл, jquery - cdn, CSS - 6KB, используя Angular)

Спасибо за любые предложения.

  • 0
    Наличие $('body') первом месте может быть настоящим тормозом. Можете ли вы поместить свои <i> в <div id="someAwesomeID"><!-- <i>'s in here --></div> а затем использовать $('#someAwesomeID') потому что это будет НАМНОГО быстрее, по крайней мере, с точки зрения производительности селектора.
  • 0
    для задержки клика github.com/ftlabs/fastclick
Показать ещё 1 комментарий
Теги:
performance
font-awesome

3 ответа

0
Лучший ответ

Спасибо вам за ваши предложения. Я использовал событие 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');
});
0

вы можете использовать Simple-Touch. Прочитайте документы, вы можете просто установить идентификатор для своих элементов, и он работает, и он очень оптимизирован для прикосновения к устройствам.

0

Это лучший селектор для добавления функции щелчка

$('.fa-check-circle-o, .fa-circle-o').on('click', function() {
    $(this).toggleClass('fa-check-circle-o fa-circle-o');
});

Хотя я думаю, что ваша проблема может заключаться в загрузке шрифта awesome font, а не в скорость события touch. Просто проверьте, соответствует ли скорость события событию с предупреждением или что-то выводит на консоль. Тогда, по крайней мере, вы знаете, в чем проблема.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню