2012-02-15 78 views
0

我在实现jQuery页内选项卡导航系统后遇到问题,该如何重新定义我的页面名称,以便在我的主导航栏中将它们设置为“活动”。PHP页面名称变量+ 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 tabbing解决方案。其中也有效。

但是,在点击其中一个标签并转到新内容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

您是显式定义$ var_page_name还是使用获取实际页面名称的函数生成? – 2012-02-15 17:03:08

回答

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> 

请记住,散列没有被默认

1

发送到服务器,它在你的标签脚本错误。

当您单击一个选项卡时,即使<a>不是标签,它也会从顶级导航栏中的<a>中删除“活动”类。

更改行:

// switch all tabs off 
$(".active").removeClass("active"); 

到:

$(".tabs .active").removeClass("active"); 

或类似只从你的标签,而不是在你的页面的所有元素删除类“活跃”的东西。

0

那么,我认为这个问题更多地与页面中的jquery代码相关,而不是PHP代码。检查JS头部代码,我发现这一点:

// When a link is clicked  
$("a.tab").click(function() {        
    // switch all tabs off    
    $(".active").removeClass("active"); 
    ... 
}); 

到点击选择“a.tab”被清零整个页面都“主动”类,其中包括了‘导航’部分中的那些结合(这是选项卡上方)。
尝试了变化这一行:

$(".active").removeClass("active"); 

要这样:

$("#tabbed_box_1").find(".active").removeClass("active"); 

应该这样做。