运行 jquery 另一个函数完成后的函数

Run jquery function after another function completes

我想在另一个自定义函数完成后执行自定义 Jquery 函数 我使用定时器来 func2。这不是正确的解决方案。 怎么写?

function fun1() {
    $('#sideNavBox .root.static > li.static').each(function(){
     if($(this).find('ul').length){
        $(this).addClass('remove');}
     $('#sideNavBox .root.static > li.remove > a').replaceWith(function(){
         return $('<span class="additional-background ms-navedit-flyoutArrow">'+$(this).html()+'</span>' );
        });
    });
};

setTimeout(
    function fun2() {
        $('#sideNavBox .root.static > li.father > span').removeClass('additional-background ms-navedit-flyoutArrow');
        $('#sideNavBox .root.static > li.father > span').addClass('static menu-item ms-core-listMenu-item ms-displayInline ms-navedit-linkNode'); 
        //do something special
}, 1000);

定义函数 2 并在函数 1 结束时在函数 1 中调用它怎么样?

function fun1() {
    $('#sideNavBox .root.static > li.static').each(function(){
        if($(this).find('ul').length){
        $(this).addClass('remove');}
        $('#sideNavBox .root.static > li.remove > a').replaceWith(function(){
            return $('<span class="additional-background ms-navedit-flyoutArrow">'+$(this).html()+'</span>' );
        });
    });
   //calling function 2 here
   fun2();
};

为什么不直接在 fun1 的末尾调用 fun2 呢?

function fun2() {
$('#sideNavBox .root.static > li.father > span').removeClass('additional-background ms-navedit-flyoutArrow');
$('#sideNavBox .root.static > li.father > span').addClass('static menu-item ms-core-listMenu-item ms-displayInline ms-navedit-linkNode');
//do something special
}


function fun1() {

$('#sideNavBox .root.static > li.static').each(function() {
    if ($(this).find('ul').length) {
        $(this).addClass('remove');
    }
    $('#sideNavBox .root.static > li.remove > a').replaceWith(function() {
        return $('<span class="additional-background ms-navedit-flyoutArrow">' + $(this).html() + '</span>');
    });
});
  
   fun2();//Call the fun2
}

您在 fun1() 中调用 fun2()

像这样

function fun2() {
    $('#sideNavBox .root.static > li.father > span').removeClass('additional-background ms-navedit-flyoutArrow');
    $('#sideNavBox .root.static > li.father > span').addClass('static menu-item ms-core-listMenu-item ms-displayInline ms-navedit-linkNode'); 
    //do something special
}

function fun1() {
$('#sideNavBox .root.static > li.static').each(function(){
    if($(this).find('ul').length){
    $(this).addClass('remove');}
    $('#sideNavBox .root.static > li.remove > a').replaceWith(function(){
        return $('<span class="additional-background ms-navedit-flyoutArrow">'+$(this).html()+'</span>' );
    });
});

fun2() ;//Call function 2
}