Как изменить порядок событий jquery?

#javascript #jquery

#javascript #jquery

Вопрос:

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

   $(document).click(function(e) {
        var target = e.target;
        var lastElement = '#'   lastList;
        console.log('here first');
        if (!$(target).is(lastElement) amp;amp; !$(target).parent().parent().is(lastElement) amp;amp; !$(target).parent().parent().parent(lastElement).is(lastElement)) {
            $('.add-card .fa-plus').show();
            $(lastElement).children().children().children('textarea').addClass('pl-8 bg-gray-200');
            $(lastElement).children().children().children('textarea').removeClass('h-20 px-4 w-60 resize bg-white');
            $('.js-add-card-button').addClass('hidden')
        }
    });
    
    $(document).on('focus', '.js-create-card', function(e) {
        setTimeout(() => {
            console.log('here');
            $(this).siblings('.add-card .fa-plus').hide();
            $(this).removeClass('pl-8 bg-gray-200');
            $(this).addClass('h-20 px-4 w-60 resize bg-white');
            $(this).siblings('.js-add-card-button').removeClass('hidden');
            lastList = $(this).parent().parent().parent().attr('id');
        }, 100);
    });
  

Итак, у меня есть несколько вопросов о решении, которое я использовал:

  1. Существует ли решение этой проблемы с асинхронным ожиданием?
  2. Задержка в 100 мс работает для меня, но будет ли она работать на всех компьютерах? Может ли более медленный КОМПЬЮТЕР разрушить эту структуру?

Комментарии:

1. Ну, если то, что происходит в фокусе, должно произойти после щелчка, почему бы просто не переместить код из события фокусировки в конец события щелчка?

2. @crimson589 вы имеете в виду поместить фокус внутри щелчка?

3. Я имею в виду, просто удалите событие focus и поместите любой код, который у вас есть, в событие click.

4. @TurqayUmudzade Не могли бы вы предоставить минимальный рабочий пример этого кода , пожалуйста ?

5. @crimson589 боюсь, это не сработает, мне нужно событие focus.