0

我的页面名称是 index.php,它包含一些链接(内部页面链接)和内容。单击链接时,我"selected" class正在应用链接li并显示相关内容,并且我的页面链接从 index.php 更改为 index.php#c2(或 #c3、#c4、c1 用于其他 ID)。

我的问题是页面加载。如果我在其他页面中提供此链接,例如。在page.php我这样给出时,我<li><a href="index.php?#c2">link2</a></li>怎么知道#c2基于此在 URL 中传递我想应用"selected" classli. 我试过了,$_SERVER但没有完成。我无法获得“?”之后的字符串。

请告诉我是否有其他方法可以做到这一点..

<li class="selected"><a href="#c1">link1</a></li>
<li><a href="#c2">link2</a></li>
<li><a href="#c3">link3</a></li>
<li><a href="#c4">link4</a></li>

<div id="c1"><!-- contents of link1 --></div>
<div id="c2"><!-- contents of link2 --></div>
<div id="c3"><!-- contents of link3 --></div>
<div id="c4"><!-- contents of link4 --></div>

jQuery代码添加选定的类

$('.links a').click(function(){
    $('.links  a').parent().removeClass('selected');
    $(this).parent().addClass('selected');  
});

提前致谢..

4

3 回答 3

3

您不能在 PHP 中执行此操作,仅因为它是客户端机制并且 PHP 在服务器上 :) 您必须直接在 JS 中解析查询字符串。

尝试这样的事情:

$('a [href='+document.location.hash+']').parent().addClass('selected');
于 2012-07-19T11:01:48.150 回答
1

我认为这会起作用......例如

example.com/page.html#anchor
example.com/page.html#anotheranchor

索尔是...

if(window.location.hash) {
  // Fragment exists
} else {
  // Fragment doesn't exist
}
于 2012-07-19T11:06:58.220 回答
0

您可以在服务器脚本或 javaScript 中使用正则表达式,而不是为每个元素定义 clss。只需使用下面给出的正则表达式模式,它只会为您提供 URL 中的链接部分。

     ^.*index.php/?(.*)$ 

要了解如何在 JavaScript 中使用RegExp 对象,请点击链接。

于 2012-07-19T11:23:53.897 回答