在实现jQuery页内标签导航系统后,我遇到了一个问题,如何重新定义我的页面名称,以便在我的主导航中将它们设置为“活动”。
我用:
<?php $var_page_name = 'example.php'; ?>
在我的网站上定义每个页面名称,示例替换为正确的页面名称。
然后,我使用以下内容设置导航中“活动”页面的样式,并使用CSS定义活动类:
<?php global $var_page_name; ?>
<ul>
<li><a<? if($var_page_name == 'index.php') print ' class="active"'; ?> href="index.php">web design</a></li>
</ul>
效果很好。我添加了一个用于导航的页内jQuery标签解决方案。这也有效。
但是,在单击其中一个选项卡并转到新内容div后,它似乎更改了页面名称,因此不再将正确的主导航项视为活动状态。该网址显示为http://www.example.com/index.php#,但如果我将我的活动网页导航变量修改为:
<a<? if($var_page_name == 'index.php' || $var_page_name == 'index.php#' ) print ' class="active"'; ?>
或尝试选项卡使用的div ID:
<a<? if($var_page_name == 'index.php' || $var_page_name == 'index.php#content_2' ) print ' class="active"'; ?>
它无法解决问题。有什么建议吗?
答案 0 :(得分:1)
这是标签脚本中的一个错误。
当您点击标签时,即使<a>
不是标签,也会从您的热门导航中的<a>
中删除“有效”课程。
更改行:
// switch all tabs off
$(".active").removeClass("active");
为:
$(".tabs .active").removeClass("active");
或类似于仅从您的标签中删除“有效”类而非页面中所有元素的内容。
答案 1 :(得分:0)
<?php $var_page_name = 'example.php'; ?>
那是错的。使用像
这样的东西<?php
$exploded = explode($_SERVER['REQUEST_URI']);
<a href="/page/" class="<?php echo ($exploded[1] == "page") ? "active" : ""; ?>">Page</a>
请记住,默认情况下不会将哈希值发送到服务器
答案 2 :(得分:0)
好吧,我认为问题与页面中的jquery代码有关,而不是PHP代码。检查js头代码,我发现了这个:
// When a link is clicked
$("a.tab").click(function () {
// switch all tabs off
$(".active").removeClass("active");
...
});
选择器“a.tab”上的点击绑定正在清除整个页面中的所有“.active”类,包括“nav”部分中的那些(位于选项卡上方)。
尝试改变这一行:
$(".active").removeClass("active");
对此:
$("#tabbed_box_1").find(".active").removeClass("active");
应该这样做。