简体   繁体   English

等待所有元素存在

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM