【问题标题】:Apply CSS class to clicked link from multiple links to same page, different sections将 CSS 类应用于从多个链接到同一页面、不同部分的单击链接
【发布时间】:2014-09-25 13:33:10
【问题描述】:

我有 3 个链接都指向同一个页面,但指向不同的部分。

这就是页面部分的样子,它们都很相似——只是从不同的表中读取。

<h1>Networking</h1>
<?php 
  include 'inc/connect.php';
  $data = mysqli_query($link, "SELECT * FROM networking WHERE id = 1")or 
                       die(mysqli_error($link));           
  while($info = mysqli_fetch_array( $data )) {
    echo nl2br($info['info']);}
?>  
</article>

这是菜单文件的一部分,其中包含指向“网络”的链接。

if ($page == 'system') { 
 $output .="<li><a href='system.php#networking' class='active'>Networking</a></li>";}
 else{
   $output .="<li><a href='system.php#networking'>Networking</a> </li>";}

所有页面部分都在一个名为 system.php 的页面中。 在 system.php 的头部我有这一行

<?php $page = 'system'; ?>

这样我就可以将 css 类 'active' 应用于活动链接。

现在的情况是,当我单击同一页面不同部分链接的任何 1 个时,“活动”类将应用于所有 3 个菜单项。

有没有一种方法可以只将类应用于单击的链接?

【问题讨论】:

  • 请提供一个小提琴,以便我们可以看到活动元素的编码。这很可能是因为它们都具有相同的链接,即使锚点不同......

标签: php html css


【解决方案1】:

我了解您的问题,您可以这样做:

system.php?section=networking#networking

并在顶部执行此操作:

<?php $page = 'system'; $section=$_GET['section']; ?>

然后将你的 if 语句更改为:

if ($page == 'system' AND $section == 'networking') { 

注意:这不是最好的解决方案,而是使用你的风格,希望对你有帮助!

【讨论】:

  • 现在我收到此错误“未定义索引:此行上的部分”''
  • 改成 if(isset($_GET['section'])) { $section=$_GET['section']; } 其他 { $section = ""; }
  • 我知道在我的页面顶部有这个 但它将类应用于所有 3 个链接!
  • 网络部分是您必须为三个链接中的每一个更改的内容(因此每个链接三个不同的内容)
  • 我明白了!你说这不是最好的解决方案,但由于我是新手,这对我来说似乎很好!所以非常感谢你在这个问题上的帮助和耐心......
【解决方案2】:

你可以试试

<?php $page =  parse_url( $_SERVER['REQUEST_URI'], PHP_URL_FRAGMENT ); ?>

但您还需要考虑一个额外的问题。当您已经在页面上并使用链接进入另一个部分时,页面不会重新加载。

如果你想在这种情况下更新活动类,你需要 javascript 中的一些东西来做到这一点。 也许这个问题可以帮助你jQueryMobile add click event to a button instead of changing page

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-10
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多