Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于ID和特定属性值向元素添加CSS类_Javascript_Jquery_Html_Css_Web - Fatal编程技术网

Javascript 基于ID和特定属性值向元素添加CSS类

Javascript 基于ID和特定属性值向元素添加CSS类,javascript,jquery,html,css,web,Javascript,Jquery,Html,Css,Web,如果id具有特定的style属性,我想使用jQuery向body添加一个新的class。 为什么这个代码不起作用 if ($('#myID').css('display') == 'none'){ $('body').addClass('loaded'); } 提前谢谢你 我找到了解决办法。当我不停地检查时,它就起作用了,而不仅仅是一次: function check_loader(){ if ($('#ple-loader-wraps99').css('display') =

如果
id
具有特定的
style
属性,我想使用
jQuery
body
添加一个新的
class
。 为什么这个代码不起作用

if ($('#myID').css('display') == 'none'){
  $('body').addClass('loaded');
}

提前谢谢你

我找到了解决办法。当我不停地检查时,它就起作用了,而不仅仅是一次:

function check_loader(){
      if ($('#ple-loader-wraps99').css('display') == 'none'){
        $('body').addClass('loaded');
      };};
window.setInterval(check_loader,1000);  

您可以使用
MutationObserver
API侦听特定DOM节点上的DOM更改,然后触发操作:

const targetNode=document.getElementById('my-id');
//指定要观察的突变(选项)
const config={attributes:true};
//模拟预加载操作(网页加载)
setTimeout(函数(){
document.querySelector(“#我的id”).style='display:none;'
}, 1000)
//观察到突变时执行的回调函数
常量回调=函数(mutationsList,observer){
console.log(`Mutation type:${mutationsList[0].type}`)
log(`ID${mutationsList[0].target.ID}`);
//在此处对目标元素进行必要的更改
document.querySelector('body').classList.add('loaded');
};
//创建链接到回调函数的观察者实例
const observer=新的MutationObserver(回调);
//开始观察目标节点是否存在已配置的突变
observer.observe(targetNode,config)
。已加载{
背景颜色:深红色;
}

加载..
myID的HTML是什么样子的?何时/如何运行该代码?假设元素存在,则运行该代码时工作正常:一定存在其他潜在问题。可能是“在元素存在之前运行”的典型情况ID是预加载程序的一部分。样式属性“显示:无”仅在网站完全加载时添加。在预加载程序隐藏后,我需要向正文中添加一个类。预加载程序库是否公开了加载完成后可以挂接的任何事件?如果没有,我建议找一个这样做的,因为这是目前为止做你需要的事情的最好方式,所以你的间歇时间将永远持续下去,即使在增加了课程之后?考虑使用递归超时来代替。@ Taple,好的,谢谢。你有一个例子吗?也许我可以用“如果是真的”来结束这个函数?@Taplar谢谢!我稍后会尝试,或者您可以只存储您的间隔id(从
setInterval
返回),然后在满足条件时清除间隔。