Last active
October 6, 2023 09:46
-
-
Save chrisjhoughton/7890303 to your computer and use it in GitHub Desktop.
Wait for an element to exist on the page with jQuery
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var waitForEl = function(selector, callback) { | |
if (jQuery(selector).length) { | |
callback(); | |
} else { | |
setTimeout(function() { | |
waitForEl(selector, callback); | |
}, 100); | |
} | |
}; | |
waitForEl(selector, function() { | |
// work the magic | |
}); |
Thanks for making the example! I got one of the examples working, by declaring the bar for the missing selector in each loop. Otherwise it won't work.
I prefer using a timeout value, so I modified the proposed answer as follows:
This will time out by default after 1 second, or never if a value of 0 is provided.
You can see a codepen here.
var waitForElement = function( selector, callback, interval, timeout )
{
if( parseInt( timeout ) !== 0 )
{
timeout = !isNaN(parseInt(timeout)) || 1000;
}
interval = !isNaN(parseInt(interval)) || 100;
var time = 0;
var poll = setInterval(function()
{
var el = $(selector);
if( typeof( timeout ) !== 'undefined' && time >= timeout )
{
clearInterval( poll );
return;
}
// Try again
else if( el.length < 1 )
{
time += interval;
return;
}
clearInterval( poll );
callback( el );
}, interval);
};
Works very well! Thank you! You are a life saver to my project
Thank you!
I set maxTimes
to 100. After 100 tries, it will stop.
jQuery(document).ready(function () {
var selector = '#element';
var waitForEl = function (selector, callback, maxTimes = false) {
if (jQuery(selector).length) {
callback();
} else {
if (maxTimes === false || maxTimes > 0) {
maxTimes != false && maxTimes--;
setTimeout(function () {
waitForEl(selector, callback, maxTimes);
}, 100);
}
}
};
waitForEl(selector, function () {
jQuery(selector); // do something with selector
}, 100);
});
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
please try this example:
https://jsfiddle.net/65otf4mL/
or source code:
https://hastebin.com/opaxacawoc.typescript
I will try to answer your questions a bit later!
The value will be decremented (maxTimes--) if it is not
null, undefined, 0, false
.