我在jQuery中有以下代码:
$( ".name" )
.on( "mouseenter", function() {
$(this).find("ul").css({"font-size": "20px",
'color': "red"});
})
.on( "mouseleave", function() {
setTimeout(function () {
$(this).find("ul").css({"font-size": "12px",
'color': "blue"});
}, 5000);
});
第一部分正在运作,但第二部分已经破解。
为什么setTimeout
mouseleave
无效?
答案 0 :(得分:3)
这是一个范围问题。 $(this)
内的setTimeout
并未引用$('.name')
。您可以通过将this
的变量设置为正确的级别并引用它来解决此问题。
.on("mouseleave", function() {
var self = $(this);
setTimeout(function() {
self.find("ul").css({
"font-size": "12px",
'color': "blue"
});
}, 5000);
});
答案 1 :(得分:0)
而不是$(this),尝试将event作为参数传递并使用$(event.target)