jquery - 如何通过 jQuery 中的 SetTimeout 函数传递元素 ID?

标签 jquery settimeout

我想通过下面的函数传递 id1、id2 和 id3。这工作得很好:

function doSomething(id1,id2,id3) {
    $(id1).fadeIn('slow',.25);
    $(id1).fadeIn('slow',.25);
    $(id1).fadeIn('slow',.25);
};

但这不起作用:

function doSomething(id1,id2,id3) {
    setTimeout( " $(id1).fadeIn('slow',.25) ", 300);
    setTimeout( " $(id1).fadeIn('slow',.25) ", 300);
    setTimeout( " $(id1).fadeIn('slow',.25) ", 300);
};

如何让第二个工作?我的想法是我需要在 id 周围添加一些标点符号。或者我可以在 setTimeout 括号内为函数设置一个变量。有什么想法吗?

最佳答案

使用 setTimeout() 来计算字符串是不好的做法。相反,使用匿名函数:

function doSomething(id1, id2, id3) {
    setTimeout(function() {
        $(id1).fadeIn('slow', 0.25);
        $(id2).fadeIn('slow', 0.25);
        $(id1).fadeIn('slow', 0.25);
    }, 300);
};

请注意,我已将所有 fadeIn() 放入一个 setTimeout() 中;它执行相同的操作,因为所有超时都会同时触发(300 毫秒)。如果你的 ID 是字符串,你也可以这样做:

function doSomething(id1, id2, id3) {
    setTimeout(function() {
        $(id1 + ', ' + id2 + ', ' + id3).fadeIn('slow', 0.25);
    }, 300);
};

虽然有点乱,但是$.add()可能会成功。

关于jquery - 如何通过 jQuery 中的 SetTimeout 函数传递元素 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8766803/

相关文章:

jquery - 加载内容后没有页面刷新的html元素问题

javascript - 如何让 JavaScript 每滚动 X 像素量就做某事

javascript - 没有延迟的setTimeout是否等于立即执行该功能?

javascript - 在 Javascript 的 for 循环中重置同一计时器的超时

jquery - TYPO3 extbase - jquery 的流体变量

javascript - 为什么在此示例中需要 "get()"?

jquery - 如何使单选按钮在 JQuery UI 折叠面板中工作?

javascript - React 必须调用 setTimeout 才能正确更新 View

javascript - 这两个代码块关于 setTimeout 问题的差异

javascript - 如何将警报附加到音频,javascript