更改当前链接的<li>类

时间:2016-07-28 15:18:50

标签: javascript jquery css

如果浏览器网址与li中的href标记相同,我有以下代码来更改li的类。

我的代码的问题在于它更改了所有li元素的类,而不仅仅是包含特定网址的元素。

Javascript:

$(document).ready(function() {
  $("#subnav a").each(function() {
    if ($(this).attr('href') == document.URL) {
      $('li').addClass("selected");
    }
  });
});

HTML

<div id="subnav">
  <ul class="tabrow">
    <li><a href="<?php echo $this->config->base_url()?>rankings/all"> Players</a>
    </li>
    <li><a href="<?php echo $this->config->base_url()?>rankings/top-guilds"> Guilds</a>
    </li>
    <li><a href="<?php echo $this->config->base_url()?>rankings/top-masterlevel">Master Level</a>
    </li>
    <li><a href="<?php echo $this->config->base_url()?>rankings/top-voters">Voters</a>
    </li>
    <li><a href="<?php echo $this->config->base_url()?>rankings/top-online">Online</a>
    </li>
  </ul>
</div>

解决方案,如果有人需要。感谢 nem035

$(document).ready(function() {
  $("#subnav a").each(function() {
    if ($(this).attr('href') == document.URL) {
      $(this).parent().addClass("selected");
    }
  });
});

2 个答案:

答案 0 :(得分:4)

您的问题是,您使用的选择器$('li')会选择所有<li>元素,而不仅仅是当前<a>的父级,其网址为您正在比较。

这可能是你应该做的:

if($(this).attr('href') == document.URL){
  $(this).parent().addClass("selected");
}

答案 1 :(得分:0)

插入你的php:

<?php
$url = $this->config->base_url.'rankings/all';
if($_SERVER['REQUEST_URI'] !== $url) echo(' class="selected" ');
?>