我想在鼠标离开时向元素添加$("#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>
答案 0 :(得分:0)
在这种情况下,我只会使用这样的箭头函数:
setTimeout(()=>{
//$(this) would work here as you intended
}, 500);
箭头函数(()=>{}
)默认情况下未设置this
。所以它会一直找到this
。
恕我直言;这是自ES6以来做回调的首选方式。