我有这个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) + "]";
监控和点击(选择器(; }, 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.5 秒的延迟来确保元素存在于 DOM 中。只有在元素存在于 DOM 中后,才应调用此函数。如果在将此元素添加到 DOM 时有另一个条件驱动,则在达到该条件后调用此函数。
你可能想试试 https://api.jquery.com/ready/
似乎jquery就绪函数也可以应用于单个元素