[英]Wait for all elements to exist
I am using a plugin that generates dynamic content.我正在使用一个生成动态内容的插件。 I need to modify the content so I am using this function to wait until the elements exist:我需要修改内容,所以我使用这个 function 等到元素存在:
var counter = 50;
var checkExist = setInterval(function () {
console.log(counter);
counter--
if ($('.title').length || counter === 0) {
// Insert font awesome arrow
$('.title').append('<i class="fa fa-angle-up"></i>');
clearInterval(checkExist);
}
}, 200);
This works perfectly fine for one element but I need to use it on multiple elements but it only runs once.这对一个元素非常有效,但我需要在多个元素上使用它,但它只运行一次。
var counter = 50;
var checkExist = setInterval(function () {
counter--
if ($('.title').length || counter === 0) {
// Insert font awesome arrow
$('.title').append('<i class="fa fa-angle-up"></i>');
clearInterval(checkExist);
}
if ($('.cartcount').length || counter === 0) {
// Set text to 0
$('.cartcount').text('0');
clearInterval(checkExist);
}
}, 200);
How can I clean this up so I can wait for any number of elements to exist before executing my code?如何清理它,以便在执行代码之前等待任意数量的元素存在?
As Lapskaus suggested, I was able to achieve what I needed with the following code.正如 Lapskaus 所建议的,我能够使用以下代码实现我所需要的。
// Wait for Menu elements to be created
var waitForEl = function (selector, callback) {
if (!jQuery(selector).size()) {
setTimeout(function () {
window.requestAnimationFrame(function () { waitForEl(selector, callback) });
}, 100);
} else {
callback();
}
};
waitForEl('.title', function () {
// Insert font awesome arrow
$('.title').append('<i class="fa fa-angle-up"></i>');
});
waitForEl('.cartcount', function () {
// Set text to 0
$('.cartcount').text('0');
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.