检查元素是否具有活动类,如果是,则将类添加到另一个元素。

8
构建一个网站为客户服务,但只需要针对主页,在主div上获取一个css的class。为此,我试图查找主菜单项上的活动类,如果它有活动类,则将不同的类添加到主网页的div中。
到目前为止,我无法进一步解决这个问题:
<script>
$(document).ready(function() { 
if $('li.level1.item101').hasClass('active');
$('#main').addClass('woodwork');}
});
</script>

这里涉及的HTML(li项)在页面上活动时看起来像这样,其中div元素位于页面的下方。
<li class="level1 item101 active current"> </li>
<li class="level1 item102"> </li>
<div id="main"> </div>

我的当前代码似乎无法获取活动的li或div,需要大家的帮助


3
旁边的div标签在li标签旁边是无效的DOM。 - Milind Anantwar
1
你不需要使用.find()来获取一个id,只需使用$('#main'),因为ID必须是唯一的。 - Anton
1
你现在的代码看起来好像是无效的。尝试使用所有括号和花括号编写一个实际的 "if" 语句: if( ... ){ ... }。同时,请注意不要使用 addClass('.woodwork'),而应该使用 .addClass('woodwork') - christian314159
div不在li旁边,而是嵌套在一个ul中,但如果我发布整个网站的HTML代码,您会得到一个庞大的不必要的代码列表。好的,谢谢Anton :) 我会更改那部分,但即使更改,它仍然不会将新类添加到其中。 - Jasper Doornbos
2个回答

16

首先,你的代码存在一些错误,HTML应该是:

<li class="level1 item101 active current"> active</li>
<li class="level1 item102"> second</li>
<div id="main"> main </div>

并且 JavaScript 代码:

$(document).ready(function(){
  if ( $('li.level1.item101').hasClass('active') ) {
    $('#main').addClass('woodwork');
  }
});

这里有一个能工作的代码示例


非常感谢,那个完美地解决了问题。我知道代码中有一些错误,但是一直无法确定具体在哪里以及是什么错误。 - Jasper Doornbos

0
如果这是你的HTML。
<ul>
    <li class="level1 item101 active current"> </li>
    <li class="level1 item102"> </li>
</ul>
<div id="main"> </div>

JavaScript 应该长这样
$(document).ready(function(){
    if ($('li.item101').hasClass('active'))
        $('#main').addClass('woodwork');
});

在这里,我只是查看具有类item101的Listelement是否具有类active,如果是这样,我将赋予具有ID main的div-Tag类woodwork


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接