我有一个jQuery函数,在单击链接时运行添加该函数创建一个ui-bootstrap.js
id
的HTML元素。所以现在我想每2秒运行一次另一个功能。在两个条件下。
如果ID为my_ele
的元素不存在。
如果标识为my_ele
的元素不等于my_ele
所以我运行了这段代码:
block
现在我对代码没有任何问题,因为它工作正常,但我的问题是,如果链接没有被点击,这将创建元素。我的console.log中出现错误setInterval(function(){
if(($("#my_ele").lenght == 0) || (document.getElementById('my_ele').style.display == 'none')){
//run function here
},2000);
请问如何强制停止此错误,或者是否有办法运行我的代码来阻止错误?
答案 0 :(得分:1)
您可以像这样更改代码:
setInterval(function(){
if($('#my_ele').css('display') != 'block') {
// your code here...
}
}, 2000);
您无需测试#my_ele
是否存在,好像不存在display
不是'阻止'。
答案 1 :(得分:0)
(未经测试)
只有元素存在时,才应检查元素是否具有某种样式。
setInterval(function(){
if(($("#my_ele").length == 0) || ($("#my_ele").length > 0 && ($("#my_ele").style.display == 'none'))){
//run function here
},2000);
答案 2 :(得分:0)
我修复了你的拼写错误,删除了无关的括号并将第二个条件更改为jQuery:
setInterval(function(){
if($("#my_ele").length == 0 || $("#my_ele").is(":hidden")){
//run function here
},2000);
}
进一步阅读:https://api.jquery.com/hidden-selector/
由于以下几个原因,可以将元素视为隐藏:
They have a CSS display value of none. They are form elements with type="hidden". Their width and height are explicitly set to 0. An ancestor element is hidden, so the element is not shown on the page.
====
限制DOM抓取和提高效率的最佳做法是设置一个变量来“缓存”一个元素(注意$myEle
变量):
setInterval(function(){
var $myEle = $("#my_ele");
if($myEle.length == 0 || $myEle.is(":hidden")){
//run function here
},2000);
}