1

我正在使用带有 grails 的 twitter 引导程序,并在我的布局中包含以下内容:

        <div class="nav-collapse">
            <ul class="nav">
                <li><a href="${createLink(uri: '/request/new')}">My Link</a></li>
            </ul>
        </div>

在我的页面上,我有以下内容:

<html>
    <head>
        <meta name="layout" content="bootstrap">
    </head>

    <body>
        sometext
    </body>
</html>

问题

在我的布局中,如何检测My Link单击操作的时间?这样我就可以使用突出显示它class="active"

4

4 回答 4

5

使用 actionName 和 controllerName 来了解您在哪个操作中。

    <div class="nav-collapse">
        <ul class="nav">
            <li ${controllerName == 'request' && actionName == 'new' ? 'class="active"' : ''}><a href="${createLink(uri: '/request/new')}">My Link</a></li>
        </ul>
    </div>

顺便说一句,我建议你在可能g:link的地方使用而不是g:createLink。这里 :

    <div class="nav-collapse">
        <ul class="nav">
            <li ${controllerName == 'request' && actionName == 'new' ? 'class="active"' : ''}><g:link controller="request" action="new">My Link</g:link></li>
        </ul>
    </div>
于 2013-01-03T23:38:28.443 回答
3

这是我倾向于这样做的方式。

首先,在您的布局中,您将执行以下操作:

<div class="nav-collapse">
    <ul class="nav">
        <li class="${ pageProperty(name:'meta.nav').equals( 'foo' ) ? 'active' : null }"><a href="${createLink(uri: '/request/new')}">My Link</a></li>
    </ul>
</div>

在您的页面中:

<html>
    <head>
        <meta name="layout" content="bootstrap">
        <meta name="nav" content="foo"/>
    </head>

    <body>
        sometext
    </body>
</html>

foo是应用.active类的触发器。

于 2013-01-03T22:09:46.463 回答
1

将您的布​​局 gsp 更改为:

<div class="nav-collapse">
    <ul class="nav">
        <li onclick="javascript: this.setAttribute("class","active");">
            <g:remoteLink controller='request' action='new' update='data'>My Link</g:remoteLink>
        </li>
    </ul>
</div>
<div id="data">
    <g:layoutBody />
</div>
于 2013-01-04T02:26:45.453 回答
1

这应该有效(注意它与 Isammoc 的回答略有不同)

<li class="${controllerName == 'user' && actionName == 'profile' ? 'active' : ''}"> profile </li>
于 2014-12-24T22:30:37.830 回答