首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于子类的更改父级div

基于子类的更改父级div
EN

Stack Overflow用户
提问于 2020-05-19 10:20:33
回答 2查看 683关注 0票数 1

当我的移动菜单打开时,我试图更改元素的背景颜色,但是很难找到javascript。

这就是我想要做的。

<a href="//online-port-ac-uk-7429396.hs-sites.com/online-learning" aria-haspopup="true" aria-expanded="false" role="menuitem">How you'll Learn</a>中有“子打开”时,我想更改<div class="child-trigger"><i></i></div>的背景色。

现在这是我的JS:

代码语言:javascript
复制
$( ".child-open" )
    .parents()
        .addClass( "has-child-open" );

但没有运气。

这是问题中的页面- http://online-port-ac-uk-7429396.hs-sites.com/

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-19 10:45:59

您可以使用addClassNameListener来检查子类是否有更改。

代码语言:javascript
复制
function addClassNameListener(elemId, callback) {
    var elem = document.getElementById(elemId);
    var lastClassName = elem.className;
    window.setInterval( function() {   
       var className = elem.className;
        if (className !== lastClassName) {
            callback();   
            lastClassName = className;
        }
    },10);
}
$( "#test" ).click(function() {
   $("#child").toggleClass("child-open");
});
addClassNameListener('child', function(){
  $( "#parent" ).removeClass("has-child-open");
  if($("#child").hasClass( "child-open" )){
      $("#parent" ).addClass( "has-child-open");
  }
});
代码语言:javascript
复制
.has-child-open{background-color: red;}

.child-open{background-color: green;}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a id ="parent"href="//online-port-ac-uk-7429396.hs-sites.com/online-learning" aria-haspopup="true" aria-expanded="false" role="menuitem">How you'll Learn</div></a>


<div id="child" class="child-trigger"><i></i>child</div>

<button id="test">change</button >

票数 1
EN

Stack Overflow用户

发布于 2020-05-19 10:28:50

我认为您根本不需要使用JavaScript --您可以简单地使用CSS:

代码语言:javascript
复制
.child-open {
    background-color: #c3d5fa;
}

当元素拥有child-open类时,它会自动将background-color样式应用于它。

如果您要寻找的是只使用JavaScript的方法,可以将CSS注入页面:

代码语言:javascript
复制
var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = `
    .child-open {
        background-color: #c3d5fa;
    }
`;
document.getElementsByTagName('head')[0].appendChild(style);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61888659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档