0

当链接没有指向任何地方(href="#")时,我的 toggleClass 会按预期工作。但是,一旦我用 URL 填写“href”,它就不再起作用了。我怀疑是因为页面刷新了?但我对 JS 很陌生。如果这是问题,我该如何解决?如果不是,那我做错了什么?

所以这是我当前使用 jquery 的 javascript:

$(document).ready(function()
{
    $('.button').click(function()
    { 
        $('.buttonselected').removeClass('buttonselected');
        $(this).toggleClass('buttonselected'); 
    }); 
});

这是我的 HTML 代码:

<nav>
    <ul>
        <li> 
            <a class="button" href="?page=frontpage"> HOME </a> 
        </li>
    </ul>
</nav>
  • 列表中有更多链接,但这与这个问题无关。

  • 是的,我正在使用 PHP 包含。

  • 另外,如何在页面加载时将链接设置为“toggleClass”,以便在有人第一次进入网站时获取该类。

  • 感谢您的帮助!

4

2 回答 2

2

你说的对。该类消失了,因为页面被重新加载。如果您在页面加载时需要特定链接以具有特定类,则需要对该链接进行硬编码。要么手动将类放在与 php 的链接上,要么以其他方式区分它,以便 JavaScript 可以找到它。

如果应该具有类的链接与您之前单击的链接不同,则必须使用 cookie 或localStorage 对象来保留该信息。

更好的是,您应该尝试找出一种不涉及重新加载页面的方法来传递此信息。这将是理想的,因为在大多数情况下,用户不希望在他们不期望的时候重新加载页面。

编辑:

如果您不需要使用查询字符串变量,@pszaba 的答案非常棒。

于 2013-10-03T14:48:01.957 回答
1

您可以使用 event.preventDefault()

$('.button').click(function( event )
{ 
    event.preventDefault(); // default action of the event will not be triggered.

    $('.buttonselected').removeClass('buttonselected');
    $(this).toggleClass('buttonselected'); 
}); 

编辑:

如果你想加载你的首页(如你的链接)并给它一个“buttonselected”类,而不是你需要使用 PHP。

像这样的东西

if( isset($_POST['page']) ){
    $selectedPage = $_POST['page'];
}

看法

<a class="button <?php echo ($selectedPage=='frontpage')?' buttonselected':'' ?>" href="?page=frontpage"> HOME </a>
于 2013-10-03T14:48:05.487 回答