メニューのアクティブなページ項目のスタイルを変更できるメニューシステムを作成しようとしています。私は各ページで別々のボディクラスを使用しています。次に、メニュー内のli
を繰り返し、ボディクラスと一致するものを探します。その試合では、そのメニュー項目に新しいスタイリングを追加します。各ループ内の要素のクラスを見つける方法
ここまでは私のコードです。
HTML
<body class="home-state">
...
<div class="menu-left">
<ul>
<li class="home-state">
<a href="/">Home</a>
</li>
<li class="work-state">
<a href="/work">Work</a>
</li>
<li class="services-state">
<a href="/services">Services</a>
</li>
<li class="about-state">
<a href="/about">About</a>
</li>
<li class="blog-state">
<a href="//blog.example.com" target="_blank">Blog</a>
</li>
<li class="shop-state">
<a href="/shop">Shop</a>
</li>
<li class="contact-state">
<a data-toggle="modal" href="#modal-coworking">Contact</a>
</li>
<li class="project-state">
<a href="/brief/index">Project brief</a>
</li>
</ul>
</div>
...
</body>
JS
var bodyClass = $("body").attr('class');
$('.menu-left ul li').each(function(){
まず:私は
var element = $(this);
第二に動作しませんでした$(this).attr("class");
を使用している、ここで要素のクラスを見つけたいです:私は要素li
にクラス.active
を追加したいの一致がある場合:私は、クラス最終 bodyClass
console.log(element);
と一致するかどうかを確認するif文を使用します。
});
ずつしか持つことが保証され、あなたの '
'要素であり、要素は複数のクラスを持つことができ、言ったように単一のクラス? (私は、* class * = "home-state big-text"のようなものではない) – nnnnnn私はただ手作業で追加していますが、後で誰かがクラスを追加すると、コードが壊れてしまいます。私はURLのパスをチェックし、正規表現を使うことを考えていましたが、ローカルではページに.htmlを追加する必要があります(私の迷惑メールマシンとは何か)。もし私がURLを盗聴するオプションを使用した場合、 devとローカルサーバー。私は要素のIDを1つだけ持つことができるので、クラスではなくIDでそれを行うことができます。 –