Javascript css函数上的回调
因此,我很熟悉这样一个事实,即不能在jQuery的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); 此代码用于移动菜单动画。有
.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