Jquery mouseleave setTimeout不起作用

时间:2016-10-29 21:35:31

标签: javascript jquery html5

我在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无效?

2 个答案:

答案 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)