javascript - JQuery:无法访问修改的元素

标签 javascript jquery html settimeout

我想在鼠标离开时向元素添加 .close 类,然后我想出于原因删除该类。

$("#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
});

添加类后我无法访问该元素。我可以做什么来完成这项工作?

操作前的 HTML:

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

操作后的 HTML:

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

最佳答案

这是因为 this 变量在事件触发后变空,并且当 this 变量没有值时调用 setTimeout 函数。您可以将 this 的值存储在另一个变量中。

$("#nav > li").mouseleave(function (){
    var $this = $(this);
    alert($this.children(".subs").length);
    $this.children(".subs").addClass("close");
    setTimeout(function () { 
        alert($this.children(".subs").length) 
    }, 500);
});

关于javascript - JQuery:无法访问修改的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45647398/

相关文章:

javascript - 需要 javascript 中 Xpath 方法的帮助(selectSingleNode、selectNodes)

javascript - 如何在jquery中获取可选择的div值或id?

javascript - 如何动态改变元素?

jquery - 无法从 JSON feed 呈现 FullCalendar 上的事件

javascript - 如何通过jquery selectable->select事件显示LI的值

javascript - 如何实现div block 高度的动态计算?

html - 尝试使用 HTML 和 CSS 使按钮可点击

javascript - 验证 Node/Express 中的 pubsubhubbub 内容签名

javascript - jquery 兄弟属性

javascript - Js 变量引用 Quickie