Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript css函数上的回调_Javascript_Jquery_Html_Css_Callback - Fatal编程技术网

Javascript css函数上的回调

Javascript css函数上的回调,javascript,jquery,html,css,callback,Javascript,Jquery,Html,Css,Callback,因此,我很熟悉这样一个事实,即不能在jQuery的.css函数上使用回调函数。相反,我使用了setTimeout函数: $('#header-nav').css({'left': leftBstr}); posBstr = '.level' + posB.toString(); setTimeout(function(e){ $('#header-nav ul' + posBstr).removeClass('menu-active'); }, 300); 此代码用于移动菜单动画。有

因此,我很熟悉这样一个事实,即不能在jQuery的
.css
函数上使用回调函数。相反,我使用了
setTimeout
函数:

$('#header-nav').css({'left': leftBstr});

posBstr = '.level' + posB.toString();
setTimeout(function(e){
    $('#header-nav ul' + posBstr).removeClass('menu-active');
}, 300);
此代码用于移动菜单动画。有两种类型的按钮:

  • 进一步进入菜单(子类别)
  • 返回(父类别)
但是,当使用
setTimeout
功能时,当我单击过快时,菜单将消失,因为已删除类
菜单处于活动状态

我已经尝试将
setTimeout
函数放入var中,并使用
clearTimeout
函数,但没有成功



我的问题:是否有其他方法可以在
.css
函数上重新创建回调函数而不使用
setTimeout

您可以尝试使用
promise

.promise()方法返回一个动态生成的承诺,该承诺在绑定到集合的特定类型的所有操作(无论是否排队)结束后解析

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

可能使用
.animate
,因此使用JS而不是css类来设置动画?嗯,我可以试试。但我也很想找到一个解决方案来替换其他情况下的回调:)@evolutionxbox出于某种原因。animate会给它一个延迟:/@MaartenWolfsen用于绑定转换端请参见您还应该提到的浏览器支持promises。。效果非常好,但问题是.css('left')动画需要300毫秒才能完成。我试图将.delay(300)添加到.removeClass()中,但没有成功。你知道解决这个问题的方法吗?你可以在js中为元素绑定转换端,然后在完成后将其删除。但是对于你正在尝试做的事情,最好使用
.animate
@Huangism尝试过。animate,但由于某些原因,它会使动画延迟,并且看起来不是很平滑。如何绑定这些转换?
delay
用于动画。仅在
done
功能中超时300毫秒。这应该能奏效@MaartenWolfsen