Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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 如果页面上的不同元素具有特定类,如何向元素添加类_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 如果页面上的不同元素具有特定类,如何向元素添加类

Javascript 如果页面上的不同元素具有特定类,如何向元素添加类,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在尝试选择主容器中的第一个头并向其中添加一个类。但我希望这取决于他们在网站的哪个部分 比如说。如果它们在EAST Core页面上,我希望标题为橙色 HTML是由后端填充的,所以我不能硬编码中的类 HTML <ul id="mainNav" class="nav navbar-nav"> <li class='linked'><a href="/?id=12">EAST Program</a> </li> &

我正在尝试选择主容器中的第一个头并向其中添加一个类。但我希望这取决于他们在网站的哪个部分

比如说。如果它们在EAST Core页面上,我希望标题为橙色

HTML是由后端填充的,所以我不能硬编码中的类

HTML

<ul id="mainNav" class="nav navbar-nav">
    <li class='linked'><a href="/?id=12">EAST Program</a>
    </li>
    <li class='active linked'><a href="/?id=86">EAST Core</a>
    </li>
    <li class='linked'><a href="/?id=20">Get More Involved</a>
    </li>
    <li class=''><a href="/?id=21">Sponsors & Exhibitors</a>
    </li>
    <li class=''><a href="/?id=22">Newsroom</a>
    </li>
</ul>

<div id="mainbar">
     <h1>This is the title I want to add a class to.</h1>
</div>
更新:由以下人员解决:

if ( $("#mainNav li:nth-child(2)").hasClass("active") ) {
    $("#mainbar h1:first-child").addClass("orangeHead");
}
一种方法是:

$("#mainNav li:nth-child(2).active")
    .closest("#mainNav").next()
    .find("h1:first-child").addClass("orangeHead");
另一种修复语法错误的原始方法:

// this is probably the "better" way to do it of the two
if ( $("#mainNav li:nth-child(2)").hasClass("active") ) {
    $("#mainbar h1:first-child").addClass("orangeHead");
}
一种方法是:

$("#mainNav li:nth-child(2).active")
    .closest("#mainNav").next()
    .find("h1:first-child").addClass("orangeHead");
另一种修复语法错误的原始方法:

// this is probably the "better" way to do it of the two
if ( $("#mainNav li:nth-child(2)").hasClass("active") ) {
    $("#mainbar h1:first-child").addClass("orangeHead");
}

您可以获取活动导航元素的索引,然后根据此信息更新其他元素,例如:

var colorClasses = ['redHead', 'orangeHead', 'blueHead', 'greyHead', 'purpleHead'],
    index         = $("#mainNav").children(".active").index();

$("#mainbar").addClass(colorClasses[index]);

这比您的代码更模块化,更易于维护,不需要在不同的页面上有不同的代码,这将适用于所有页面。基本上,活动元素的索引只需要与添加到mainbar元素的类的颜色数组的索引对齐。

您可以获取活动导航元素的索引,然后根据此信息更新其他元素,例如:

var colorClasses = ['redHead', 'orangeHead', 'blueHead', 'greyHead', 'purpleHead'],
    index         = $("#mainNav").children(".active").index();

$("#mainbar").addClass(colorClasses[index]);

这比您的代码更模块化,更易于维护,不需要在不同的页面上有不同的代码,这将适用于所有页面。基本上,活动元素的索引只需要与添加到mainbar元素的类的颜色数组的索引对齐。

您可以根据您的活动状态切换标题类

$("#mainbar h1:first-child").toggleClass("orangeHead", $("#mainNav li:nth-child(2)").hasClass("active"));

您可以根据li的活动状态切换标题类别

$("#mainbar h1:first-child").toggleClass("orangeHead", $("#mainNav li:nth-child(2)").hasClass("active"));

有趣的是,你可以用不同的方法来达到相同的结果。这是另一个选择

toOrange = $("#mainNav").find("li").eq(1);
if( toOrange.is(".active") ){
   $("#mainbar > h1").addClass("orangeHead");
}


我个人更喜欢.eq方法而不是伪类,在许多情况下,伪类速度更快。

有趣的是,您可以通过不同的方法获得相同的结果。这是另一个选择

toOrange = $("#mainNav").find("li").eq(1);
if( toOrange.is(".active") ){
   $("#mainbar > h1").addClass("orangeHead");
}


我个人更喜欢.eq方法而不是伪类,在许多情况下,伪类速度更快。

您应该尽量与id名称保持一致。一个用驼峰大小写,另一个全是小写。你已经有了很好的答案。而且,在fiddle中,添加jQuery支持在这里起作用。添加jquery和.hasklass会使您的id名称更加一致。一个用驼峰大小写,另一个全是小写。你已经有了很好的答案。而且,在fiddle中,添加jQuery支持在这里起作用。添加jquery和.hasClass就可以了