首页 > 解决方案 > 如何更改 jquery 事件的顺序?

问题描述

我这里有 2 个事件,一个是输入,click一个是focus输入,我需要在焦点之前单击运行,所以我添加了一个超时,但我觉得这不是一个优雅的解决方案。

  $(document).click(function(e) {
        var target = e.target;
        var lastElement = '#' + lastList;
        console.log('here first');
        if (!$(target).is(lastElement) && !$(target).parent().parent().is(lastElement) && !$(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. 100ms 延迟对我有用,但它适用于所有 PC 吗?速度较慢的 PC 会破坏这种结构吗?

标签: javascriptjquery

解决方案


推荐阅读