Вы можете использовать setInterval()
для достижения этой цели, а не setTimeout()
:
var intervalId = 0;
$('.myButton').live('click', function(){
if (intervalId != 0) {
clearInterval(intervalId);
}
intervalId = setInterval(function() {
var textVal = $('p').text();
if (textVal == 'expectedValue'){
clearInterval(intervalId);
intervalId = 0;
alert('done');
}
}, 10);
});
Еще одним преимуществом этого подхода является то, что вы можете определить, щелкнули ли они по нему, и упомянуть, что он уже проверен.
var intervalId = 0;
$('.myButton').live('click', function(){
if (intervalId != 0) {
alert('check already in progress... please wait');
return false;
}
intervalId = setInterval(function() {
var textVal = $('p').text();
if (textVal == 'expectedValue'){
clearInterval(intervalId);
intervalId = 0;
alert('done');
}
}, 10);
});
В качестве альтернативы вы можете запросить их и спросить пользователя, хотят ли они прекратить проверку (в этом случае просто очистите интервал и установите значение intervalId равным 0).