0

我很难弄清楚为什么这不起作用。由于某种原因,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)

4

1 回答 1

0

好的 - 我想我明白了:)

修改后的 IF 语句:

if(window.location.href.indexOf("/"+ sectionTitleSlug +"/") > -1) {
  //
};

这样它匹配 /sectionTitleSlug/ (因此它精确定位特定目录而不仅仅是文本)。

于 2013-09-07T22:19:53.873 回答