JQuery:无法访问修改后的元素

时间:2017-08-12 06:49:36

标签: javascript jquery html settimeout

我想在鼠标离开时向元素添加$("#nav > li").mouseleave(function (){ alert($(this).children(".subs").length); // value 1 $(this).children(".subs").addClass("close"); setTimeout(function () { alert($(this).children(".subs").length) }, 500); // value 0 }); 类,然后我想删除此类。

<div class="subs" id="service-subs" aria-haspopup="false">
    stuff
</div>

添加类后,我无法访问该元素。我能做些什么呢?

行动前的

HTML:

<div class="subs close" id="service-subs" aria-haspopup="false">
    stuff
</div>
行动后的

HTML:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="GlobalForm.aspx.vb" Inherits="WebApplication3.GlobalForm" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
    <form id="form1" runat="server">
        <asp:Button runat="server" ID="Button1" Text="But1"/>
        <asp:Button runat="server" ID="Button2" Text="But2"/>
    </form>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

在这种情况下,我只会使用这样的箭头函数:

setTimeout(()=>{
  //$(this) would work here as you intended
}, 500);

箭头函数(()=>{})默认情况下未设置this。所以它会一直找到this
恕我直言;这是自ES6以来做回调的首选方式。