在与具有javascript和jQuery库的元素交互之前,实现等待元素存在N秒

在与具有javascript和jQuery库的元素交互之前,实现等待元素存在N秒,javascript,jquery,Javascript,Jquery,我有以下代码: var play = function() { $(steps).each(function(i, e) { $(this).is(':visible') ? $(this).click() : console.log($(this).html() + ': not visible'); }); }; 此代码的问题在于,如果元素可见,它会立即单击该元素。但是,我希望在单击元素之前,等待/轮询该元素

我有以下代码:

var play = function() {
    $(steps).each(function(i, e) {
        $(this).is(':visible') 
            ? $(this).click()
            : console.log($(this).html() + ': not visible');
    });
};
此代码的问题在于,如果元素可见,它会立即单击该元素。但是,我希望在单击元素之前,等待/轮询该元素最多出现N秒。有没有关于如何实施的建议?谢谢

然后使用
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

    });
};
那么

setTimeout(function(){ $(this).click(); }, 5000) // 5 sec

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

我想您可能需要轮询部分的setInterval。也许是这样的:


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

delay()
仅适用于队列,因此我认为它在这种特殊情况下不起作用。感谢您的回复!但这不只是等待N秒后单击一个元素吗?在这个上下文中,present表示元素可见。updated。现在它在N毫秒后点击,只有当它“存在”对不起,我认为我最初的问题不够清楚。让我更新一下。谢谢你的回复!但这不只是时间过后的点击吗?是的。对不起,这不是你想做的吗?如果你不想的话,请你澄清一下。没问题。这里的想法是,我想对元素的存在进行投票,并在它出现时单击它。感谢您的回复!但这不是在单击之前等待5000毫秒吗?
var play = function() {
    $(steps).each(function(i, e) {
        $(this).is(':visible') 
            ? setTimeout(function(){ $(this).click(); }, TIME),
            : console.log($(this).html() + ': not visible');
    });
};