使用jquery甚至是非子链接在navbar中设置活动类

时间:2016-02-20 18:13:50

标签: javascript php jquery html yii2

以下是来自single-product.html的html代码

<nav class="main-navi">
    <ul>
        <li>
            <a href="index.html">
                Home
                <span class="dot"></span>
                <span class="corner"></span>
            </a>
        </li>
        <li>
            <a href="portfolio.html">
                Portfolio
                <span class="dot"></span>
                <span class="corner"></span>
            </a>
        </li>
        <li>
            <a href="about.html">
                About
                <span class="dot"></span>
                <span class="corner"></span>
            </a>
        </li>

        <li>
            <a href="service.html">
                services
                <span class="dot"></span>
                <span class="corner"></span>
            </a>
        </li>
        <li>
            <a href="blog.html">
                Blog
                <span class="dot"></span>
                <span class="corner"></span>
            </a>
        </li>
        <li>
            <a href="contact.html">
                contacts
                <span class="dot"></span>
                <span class="corner"></span>
            </a>
        </li>
    </ul>
    <em id="showHideMenu" class="show-hide-menu fa fa-bars" href="#"></em>
</nav>


<p>lorem ipsum bla bla bla bla bla bla blabla </p>

所以我的问题:正如你在导航栏中看到的那样,我没有在导航栏中放置单个portfolio1,single-profolio2和single-portfolio3。所以我想当我加载单个组合1或2或3时,iwant在navbar中的投资组合链接获得了类激活。我怎么能用jquery做到这一点?我可以设置像contains(“单一组合”)这样的特定方法。

1 个答案:

答案 0 :(得分:0)

因此,有几种不同的方法可以解决这个问题。首先,您可以创建一个您希望显示活动类的页面数组,然后如果@Override protected void onCreate(Bundle savedStateInstance) { super.onCreate(savedStateInstance); setContentView(R.layout.splash); int imgId[] = new int[] { R.drawable.splash_img1, R.drawable.splash_img2 }; Random random = new Random(); int result = random.nextInt(imgId.length); // edit this part. LinearLayout layout = (LinearLayout) findViewById(R.id.splash_layout); layout.setBackgroundDrawable(getResources().getDrawable(imgId[result])); 在此数组中,您可以像这样触发活动类:

window.location.pathname

请记住,这将查找页面的路径名,因此,如果您的网址是example.com/single-portfolio-1.html,则会返回/single-portfolio-1.html,如果它是example.com/pages/single -portfolio-1.html它会返回/pages/single-portfolio-1.html所以在你的数组中相应调整

或者您可以找到具有这些页面特有的类的内容,或者在这些页面上为正文提供一个类,然后如果您的单个投资组合页面var pageArray = ["/single-portfolio-1.html", "/single-portfolio-2.html", "/single-portfolio-3.html"]; var loc = window.location.pathname; if ($.inArray(loc, pageArray) > -1){ $('.main-navi ul li a[href="portfolio.html"]').addClass("active"); } 上的元素如此,则激活您的活动类:

hasClass()

如果您有一个对您的单个投资组合页面唯一的元素,您可以使用它只需替换if语句以包含唯一元素。

或者您可以在这些页面上放置一个脚本来更改活动类,如下所示:

if($('body').hasClass("portfolio-page")){
    $('.main-navi ul li a[href="portfolio.html"]').addClass("active");
}

希望这会有所帮助