在与具有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');
});
};