3

我有以下代码:

var play = function() {
    $(steps).each(function(i, e) {
        $(this).is(':visible') 
            ? $(this).click()
            : console.log($(this).html() + ': not visible');
    });
};

这段代码的问题在于,如果元素可见,它会立即单击该元素。但是,我想在单击元素之前等待/轮询该元素最多N秒。关于如何实现这一点的任何建议?谢谢!

4

4 回答 4

0

然后使用setTimeout(). 由您决定如何通过/获得N

var play = function() {
    $(steps).each(function(i, e) {

        //preserve target since "this" in the timeout may be different
        var target = $(this);

        setTimeout(function(){
            if(target.is(':visible')){
                 target.click();
            }
        },N); //Click and check after N milliseconds

    });
};
于 2012-05-11T05:29:29.183 回答
0

关于什么...

setTimeout(function(){ $(this).click(); }, 5000) // 5 sec
于 2012-05-11T05:29:38.123 回答
0

我想你可能想要一个 setInterval 作为轮询部分。也许是这样的:

http://jsfiddle.net/GVu98/

基本上只需设置一个间隔,该间隔将继续运行,直到您等待的东西出现,然后清除间隔。

于 2012-05-11T06:31:04.677 回答
0
var play = function() {
    $(steps).each(function(i, e) {
        $(this).is(':visible') 
            ? setTimeout(function(){ $(this).click(); }, TIME),
            : console.log($(this).html() + ': not visible');
    });
};

其中 TIME 是您要等待的毫秒数 :)

于 2012-05-11T05:30:59.870 回答