首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery和toggleClass

jquery和toggleClass
EN

Stack Overflow用户
提问于 2011-01-09 03:32:53
回答 1查看 1.1K关注 0票数 1

我有一个网站的脚本。当您单击链接时,它会切换页面,并且使用jquery中的toggleClass方法也会切换链接本身。

脚本运行得很好,但是页面是一个接一个地加载,所以我对它做了一些修改。如果你第一次点击一个链接,链接就会改变(变大),页面就会出现。链接的值存储在一个变量(previousClick)中。现在,如果我点击第二个链接,前一页就消失了,新的一页出现了。这可以很好地工作。但之前的链接仍然更大。我找不到如何将其还原为较小的字体...

代码如下:

代码语言:javascript
复制
var pages = function()
{
    var nav = $( 'ul#nav li a' );
    var previousClick = '';

    nav.click( function()
    {
        if (previousClick.length==0)
        {
            $( this ).parent().toggleClass( 'selected' );
            $( $( this ).attr( 'href' ) + '-page' ).toggle( 500 );
            previousClick = $( this ).attr( 'href' );
            return false;
        }
        else
        {
            $('li a [href=' + previousClick + ']').toggleClass( 'selected' );
            $( previousClick + '-page' ).toggle( 500 );
            $( this ).parent().toggleClass( 'selected' );
            $( $( this ).attr( 'href' ) + '-page' ).toggle( 500 );
            previousClick = $( this ).attr( 'href' );
            return false;   
        }
    });
};

$( window ).load( pages );

css:

代码语言:javascript
复制
ul#nav li { padding: 1px; }
ul#nav li a
{
    font: italic normal 20px/normal 'Palatino Linotype', Georgia, Comic sans MS, Times, Serif;
    text-decoration: none;
    text-shadow: 0 1px 0 #000;
    position: relative;
    z-index: 3;
    color: #fff;
    display: block;
}
ul#nav li a span
{
    font-size: 28px;
    font-family: Baskerville, Palatino, 'Palatino Linotype', Georgia, Serif;
    /*color: #3b0314;*/
    color: #FEDB00;
}
ul#nav li a:hover,
ul#nav li.selected a
{
    font-size: 200%;
}

和html格式的菜单:

代码语言:javascript
复制
<ul id="nav">
    <li id="star-top"></li>
    <li><a href="#société"><span>Qui</span>sommes nous?</a></li>
    <li><a href="#coachingé">Coaching<span>à</span>domicile</a></li>
    <li><a href="#entrainementé"><span>Plan</span>d'entrainement</a></li>
    <li><a href="#aquatiqueé"><span>Activités</span>aquatiques</a></li>
    <li><a href="#entreprisé"><span>Espace</span>Entreprise</a></li>
    <li id="star-bot"></li>
    <li><a href="#contact">Contactez<span>nous</span></a></li>
    <li><a href="#partenaire"><span>Nos</span>partenaires</a></li>
</ul>

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2011-01-09 03:38:26

我认为,因为您使用的是$( this ).parent().toggleClass( 'selected' );,所以还应该使用:

代码语言:javascript
复制
$('li a[href=' + previousClick + ']').parent().toggleClass( 'selected' );

而不是

代码语言:javascript
复制
$('li a [href=' + previousClick + ']').toggleClass( 'selected' );

编辑:

或者,更好的方法是:

代码语言:javascript
复制
$('#nav li:has(a[href=' + previousClick + '])').toggleClass('selected');

我添加#nav是因为:has匹配所有的后代,而不仅仅是直接的子代。因此,如果您的#nav被包装在另一个<li>中,那么它的类也会被切换。

编辑:

啊,我现在明白了。这很微妙:a [href=...]的意思是“一个标签,它的属性为href,在a标签内的值为...”。因此,它将匹配<a><a href="..."></a></a>,这不是我们想要的。你应该使用a[href=...],不带空格。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4635718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档