我正在Drupal 8网站上工作。在那我在分配活动类别到导航列表元素时遇到问题。
我使用以下代码设置了活动类,它适用于相同的URL。
代码看起来像这样
<nav id="getnav">
<ul>
<li>
<a class="" data-drupal-link-system-path="user" href="/drupal/todo">Todo</a>
</li>
<li>
<a class="" data-drupal-link-system-path="user" href="/drupal/files">Files</a>
</li>
<li>
<a class="" data-drupal-link-system-path="user" href="/drupal/photos">Photos</a>
</li>
</ul>
</nav>
我使用了jQuery函数来基于URL设置活动类。使用以下代码。
function setActive() {
var myurl =window.location.href.substr(window.location.href.lastIndexOf("/")+1);
$("#getnav ul li a").each(function(){
if($(this).attr("href") == '/drupal/'+myurl )
$(this).addClass("active");
});
}
window.onload = setActive();
真正的问题是,只要访问子页面(如todo / page2),活动类就消失了。
http://localhost/drupal/todo :::工作正常,但在访问子页面后
http://loclahost/drupal/todo/add
全班没了
请给我关于这个问题的建议。
我也想将Active类设置为所有子页面。todo / *之后
最佳答案
您可以使用纯CSS做到这一点。您需要将class/id
添加到body元素和nav li
元素中,然后可以在要突出显示的css中定义它们的组合。例如,假设这是您的html:
< body id="todo_body">
<nav id="getnav">
<ul>
<li class="todo_dropdown">
<a class="" data-drupal-link-system-path="user" href="/drupal/todo">Todo</a>
</li>
<li class="files_dropdown">
<a class="" data-drupal-link-system-path="user" href="/drupal/files">Files</a>
</li>
<li class="photos_dropdown">
</body>
<a class="" data-drupal-link-system-path="user" href="/drupal/photos">Photos</a>
</li>
</ul>
</nav>
</body>
现在,您可以使用如下所示的css将突出显示样式应用于“应该活跃”的li元素:
#todo_body .todo_dropdown,
#files_body .files_dropdown,
#photos_body .photos_dropdown
{
background-color: red;
color: white;
/*Your css styles for active nav item will come here */
}
您还可以向
should be active
li元素中包含的任何元素添加任何样式。关于javascript - 当事件类具有某些子页面时,如何向其添加事件类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38408329/