加载js元素时执行某些操作,但无法正常工作

时间:2018-05-31 02:22:32

标签: javascript jquery timeout load setinterval

我有这个Jquery函数,当它准备就绪时点击一个元素。它的间隔时间如下:

MonitorAndClick(selector) {
    var ele = $(selector);
    if (ele.length == 0) {
        var intervalid = setInterval(function () {
            var ele = $(selector);

            if (ele.length > 0) {
                ele[0].click();
                clearInterval(intervalid);

                return true;
            }
        }, 500);
    } else {
        ele[0].click();
        return true;
    }
}

问题是在某些情况下,它无法正常工作。但是这是一个间隔,它每隔0.5秒检查一次元素就准备好了,那怎么可能呢?有没有其他方法来检查元素是否准备就绪?

补充说明:

我有手风琴。我有打开手风琴的功能 - >打开其中一个项目 - >打开标签页的详细信息部分

这是功能:

 //--reach to this point, open accordion index 2--------
 ShowAccordion(2);
 //----open the item with specific Id in accordion items------
 setTimeout(function () {
    var selector = "tr[gacategory = '/myprotection/mywills/item_" + parseInt(willId) + "]";

MonitorAndClick(选择器);         },500);

关键是这个元素应该在那里,有时它的加载速度不够快,而且我想要检查它是否加载,然后点击它。

评论后更新了代码

var selector = "tr[gacategory = '/myprotection/mywills/item_" + parseInt(willId) + "]";
    $("#selector").ready(function () {
        console.log('**********.... selector is loaded ....*****');
        if (!$("#selector").hasClass('selected')) 
            MonitorAndClick(selector);
    });

仍然无法正常工作。

2 个答案:

答案 0 :(得分:0)

为什么要依靠0.5秒的延迟来确保您的元素存在于DOM中。只有在DOM中存在元素后才应调用此函数。如果在将此元素添加到DOM时存在另一个驱动条件,则在达到该条件后调用此函数。

答案 1 :(得分:0)

您可以尝试https://api.jquery.com/ready/

似乎jquery ready函数也可以应用于单个元素