在JQuery中,设置新的css规则后是否可以获得回调函数?

Sta*_*lin 31 html javascript css jquery

我有$('.element').css("color","yellow"),我需要下一个事件只在这之后,看起来$('.element').css("color","yellow",function(){ alert(1); }) 我需要这个因为:

$('.element').css("color","yellow");
 alert(1);
Run Code Online (Sandbox Code Playgroud)

事件几乎都在一次发生,这一刻调用动画效果中的bug(例如,alert(1)就在这里,在实际模块中它是动画)

小智 22

你可以使用诺言

$('.element').css("color","yellow").promise().done(function(){
    alert( 'color is yellow!' );
});
Run Code Online (Sandbox Code Playgroud)

http://codepen.io/onikiienko/pen/wBJyLP

  • 此处链接的codepen在Chrome中无法正常运行:版本61.0.3163.100(官方构建)(64位) (2认同)

Zac*_*oom 21

回调仅对异步函数是必需的.在代码执行继续之前,css函数将始终完成,因此不需要回调.在代码中:

$('.element').css('color', 'yellow');
alert(1);
Run Code Online (Sandbox Code Playgroud)

在发出警报之前将更改颜色.您可以通过运行以下方式确认:

$('.element').css('color', 'yellow');
alert($('.element').css('color'));
Run Code Online (Sandbox Code Playgroud)

换句话说,如果你想使用回调,只需在css函数后执行:

$('.element').css('color', 'yellow');
cb();
Run Code Online (Sandbox Code Playgroud)

  • 是的,它有点复杂.通过读取元素的css属性,您正在强制重新绘制,使其生效.您还可以将后续代码放在具有超时0的setTimeout中,以将执行推迟到下一个事件循环滴答. (5认同)