Javascript 改变<;李>;当前链接的类

Javascript 改变<;李>;当前链接的类,javascript,jquery,css,Javascript,Jquery,Css,如果浏览器url与li中的a href标记的字符串相同,我有以下代码来更改li的类 我的代码的问题是它更改了所有li元素的类,而不仅仅是包含特定url的元素 Javascript: $(document).ready(function() { $("#subnav a").each(function() { if ($(this).attr('href') == document.URL) { $('li').addClass("selected"); } }

如果浏览器url与
li
中的a href标记的字符串相同,我有以下代码来更改
li
的类

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

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>

您的问题是您正在使用选择器
$('li')
,该选择器选择所有
  • 元素,而不仅仅是要比较其url的当前
    的父元素

    这可能是您应该做的:

    if($(this).attr('href') == document.URL){
      $(this).parent().addClass("selected");
    }
    
    插入u php:

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