正如标题所说,如果我删除了setTimeout方法,它可以工作但我需要在函数触发之前延迟。
$( ".pa-wrap" ).hover(
function() {
$( this ).find( ".pa-ano-wrap" ).css({
"display": "block",
"opacity": 0
}).animate({
"opacity": 0.8
}, 200);
}, function() {
$( this ).find( ".pa-ano-wrap" ).animate({
"opacity": 0
}, 200);
setTimeout(function() {
$( this ).find( ".pa-ano" ).css({
"height": "24px",
"top": "-33px"
});
}, 201);
}
);
答案 0 :(得分:0)
那是因为this
引用了setTimeout
更改的当前上下文,因此您需要将其绑定到您想要的上下文:
setTimeout(function() {
// ...
}.bind(this), 201);
另外,我建议从性能和可读性的角度来缓存元素:
var paWrap = $('.pa-wrap');
paWrap.hover(function() {
paWrap.find('.pa-ano-wrap').css({
// and so on
});
它还有助于解决所有this
混淆,因为您始终知道this
所指的内容。