javascript - setTimeout 到 addClass,然后检查元素是否有Class

标签 javascript jquery

我无法控制台记录以下消息。使用setTimeout addClass后hasClass不起作用吗?

<img id="swipeUp1" class="swipeUp" src="img/arrow.png">

setTimeout(function() {
    $("#swipeUp1").addClass("moveOn");
}, 500);
if ($('#swipeUp1').hasClass('moveOn')) {
    console.log("swipeup1 has class moveOn");
}

最佳答案

setTimeout() 处理程序(包含 addClass() 的函数)在 if 语句之后执行,因为您显式请求不要立即执行,而是在 500 毫秒后执行。

因此下一行(if 语句)会立即执行,远远早于 addClass()

如果您希望它们按顺序执行,则必须将 hasClass() 移至处理程序内部或将 addClass() 移至外部:

// all inside handler
setTimeout(function() {
    $("#swipeUp1").addClass("moveOn");

    if ($('#swipeUp1').hasClass('moveOn')) {
        console.log("swipeup1 has class moveOn");
    }
}, 500);

或者:

// no setTimeout at all
$("#swipeUp1").addClass("moveOn");

if ($('#swipeUp1').hasClass('moveOn')) {
    console.log("swipeup1 has class moveOn");
}

关于javascript - setTimeout 到 addClass,然后检查元素是否有Class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30584898/

相关文章:

javascript - 如何使用 Id 数组过滤对象列表 - Angular/TypeScript

ajax - 始终使用成功和错误回调

javascript - 当 Mockjax 返回状态 :500 (or 400 or. 时,jQuery 不会触发 $.ajax.fail() ..)

javascript - xeponline.jqPlugin.js(或 css2pdf)SVG <use> 引用另一个 SVG 不会在 PDF 中显示

javascript - 如何对齐具有不同列数的两行

javascript - 检查字符串是否包含数字?如果是,则将该数字替换为另一个字符串

javascript - CSS 背景图片不会显示

javascript - HTML 5 : remove colour from canvas at mouse click position

javascript - react-dom/server 是否在客户端工作?

javascript - 为什么表格内的按钮在单击时不获取 td 的值?