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

kal*_*azy 1 jquery settimeout

我想通过下面的函数传递id1,id2和id3.这很好用:

function doSomething(id1,id2,id3) {
    $(id1).fadeIn('slow',.25);
    $(id1).fadeIn('slow',.25);
    $(id1).fadeIn('slow',.25);
};
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

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

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

Boj*_*les 5

setTimeout()评估字符串是不好的做法.相反,使用匿名函数:

function doSomething(id1, id2, id3) {
    setTimeout(function() {
        $(id1).fadeIn('slow', 0.25);
        $(id2).fadeIn('slow', 0.25);
        $(id1).fadeIn('slow', 0.25);
    }, 300);
};
Run Code Online (Sandbox Code Playgroud)

请注意,我把你所有的fadeIn()s放在一个setTimeout(); 它会做同样的事情,因为你的所有超时都会同时触发(300毫秒).如果您的ID是字符串,您也可以这样做:

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

虽然它有点乱,但$.add()可能会有所作为.