English 中文(简体)
Jquery 删除并添加活动类, 以 防止 Default 在 li 节点和问题中添加活动类
原标题:Jquery removing and adding active class to li nodes & issues with preventDefault

Jquery 删除 & amp; 添加 LIL 导航工程活动类, 防止 Default, 但链接不长

Jquery 删除工作无效的 li 节点中添加的活动类

我知道删除活动类并将其添加到 lis 应该是非常基本的, 以便突出显示当前 page s nav 项, 但我一直无法让它工作 。

我发现我必须使用 e. preventionDefault () 来使其生效, 但当我使用链接时, 无法工作, 但突出显示的 nav 项是有效的。 如果我删除了该防止 Default (), 它会导航, 但不会突出显示 。 我应该说, 我的 NAv 正在坐在信头. php 中, 包括文件 。 这里我所知道的是 :

<ul class="myNav">
  <li><a href="index.php">Home</a></li>
  <li><a href="portfolio.php">Portfolio</a></li>
  <li><a href="about.php">About</a></li>
  <li><a href="contact.php">Contact</a></li>
</ul>

$( .myNav li a ).click(function (e)
{
  e.preventDefault();
$( .myNav li ).siblings().removeClass( active );
$(this).parent().addClass( active );
//var url = $(this).attr("href"); 
//window.location = url;
});

我试图将页面发送到点击的 URL 上, 这加载了正确的页面, 但它删除了该类! 我想解决这个问题, 但我也想知道为什么它工作不正确 。

最佳回答

我最后在PHP这样:

<?php
//grab the current page name to use in the
$path = $_SERVER[ PHP_SELF ];
$page = basename($path);
$page = basename($path,  .php );
?>

        <li<?php if ($page ==  index ) echo  class="active" ;?>><a href="index.php">Home</a></li>
    <li <?php if ($page ==  portfolio ) echo "class= active "; ?> ><a href="portfolio.php">Portfolio</a></li>
    <li <?php if ($page ==  about ) echo  class="active" ; ?> ><a href="about.php">About</a></li>
    <li <?php if ($page ==  contact ) echo  class="active" ; ?> ><a href="contact.php">Contact</a></li>
问题回答

我恐怕您无法同时使用 only jQuery] 实现加亮和重定向到页面。 您最好尝试将类 active 添加到您的页面中相应的 li , 例如在 index.php 页面中添加此行

  <li class="active"><a href="index.php">Home</a></li>

因为您仅使用 jQuery 无法保存菜单状态。 如果您页面的此菜单部分位于像 header.php 这样的分隔文件中, 那么您必须检测哪个是当前页面。 而且可以很容易地在php 中检测到当前页面, 并在相应的 class=" 中添加 class=" " 到相应的 li 来突出显示这一点 。

当您浏览页面时, 无论您在 Javascript 中做什么, 都会丢失。 唯一的办法是您的服务器程序设置活动标志, 也许在链接中添加查询参数, 或者检查程序 s url

您必须在 PHP 中通过检测当前 URL 并比较您导航中节点的 URL 来做到这一点。 请查看 : < a href="https:// stackoverflow. com/ questions/ 189113/ how-do- i- get- put- page- full- url- in- php" 。 <我如何在 Windows/ IIS 服务器上获取当前页面的完整 URL?

var link = document.location.href.split( / ).slice(-1);   // retrieve page name
$( #menuInner li a.active ).removeClass( active );        // remove class  active 
$( #menuInner li a[href$=" +link+ "] ).parent().addClass( active );// and add it to a matching 




相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.