我有这个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);
});
仍然无法正常工作。
答案 0 :(得分:0)
为什么要依靠0.5秒的延迟来确保您的元素存在于DOM中。只有在DOM中存在元素后才应调用此函数。如果在将此元素添加到DOM时存在另一个驱动条件,则在达到该条件后调用此函数。
答案 1 :(得分:0)
您可以尝试https://api.jquery.com/ready/
似乎jquery ready函数也可以应用于单个元素