なぜこれが機能しないのかを理解するのに苦労しています。何らかの理由で、If ステートメントは、一致する項目以外にも発火しています。サイドバーの各セクションを実行して、セクション タイトルの名前が現在の URL の / 一部に含まれているかどうかを確認して、そのセクションがアクティブであることを確認しようとしています。
私の構造は次のように設定されているため、正確な URL を一致させることはできません。
<div class="row">
// inside each section (row) div is a section title link, ie: /section-link/
// and the section navigation links, ie: /section-link/page-link
</div>
<div class="row">
...
</div>
and so on.
/section-link/ が現在の URL の一部であるかどうかを確認する必要があります。そうであれば、そのセクション タイトル/リンクを含むセクションをアクティブなセクションに設定します。そうすれば、セクション内のタイトルとすべてのリンクが一致をトリガーし、セクションがアクティブになるように設定されます。
すべてのアラートが正しいデータを返します。
/* active sidebar section */
$("#sidebar .row").each(function(){
var currentSection = $(this);
var sectionTitle = $(this).find("h1 a").text();
//alert(sectionTitle);
var sectionTitleSlug = sectionTitle.toLowerCase();
var sectionTitleSlug = sectionTitleSlug.replace(/[^\w ]+/g,'');
var sectionTitleSlug = sectionTitleSlug.replace(/ +/g,'-');
//alert(sectionTitleSlug);
if(window.location.pathname.indexOf(sectionTitleSlug) > -1) {
//alert(sectionTitleSlug);
$(currentSection).addClass("activeSection");
var activeSectionIndex = $(".activeSection").index();
$(".accordion").accordion("option", "active", activeSectionIndex);
};
});
洞察をいただければ幸いです!~
更新:私も試しましたif(window.location.href.indexOf(sectionTitleSlug) > -1)