0

需要有关此代码的帮助,我从网络上下来了

$(document).ready(function(){
jQuery(".linkbar li").each(function(){
var href = jQuery(this).find('a').attr('href');
if (href === window.location.pathname) {
$(this).addClass('current');
}
});
});

如果我做 document.write(href);

我得到“未定义”

如果我将 var 放在函数href = jQuery(this).find('a').attr('href');之前.each(),它会更改我到当前类的所有链接

下面是我的 HTML 和 CSS 我需要更改当前页面的 css 链接,我对 Jquery/JS 不太好。请向我解释问题是什么以及如何解决。

<div class ="linkbar">

<a href = "/HTS/about-us.php"><li> ABOUT US </li> </a>
<a href = "service.php"><li> SERVICES </li> </a>
<a href = "download.php"><li> DOWNLOAD </li> </a>
</div>

CSS

.linkbar li{
text-decoration:none;
float:left;
list-style-type: none;
font-size:11px;
width:auto;
padding:9px 18px 9px 18px;
}

.current{
background-color:#fecd0f;
vertical-align:center;
color:#fff;
}
4

3 回答 3

1

您的 HTML 无效。<li>标签必须在<ul>标签内。将<a>标签放入<li>标签中以使其find("a")工作:

<ul class ="linkbar">
  <li><a href = "/HTS/about-us.php">ABOUT US </a></li> 
  <li><a href = "service.php">SERVICES </a></li> 
  <li><a href = "download.php">DOWNLOAD </a></li> 
</ul>
于 2012-12-23T12:45:07.083 回答
0

好吧,伙计,您有 .find() 可以在元素内部找到,并且您将标记锚定为 li 标记的父级,因此请使用以下命令:

var href = $(this).parent('a').attr('href');

如果是这样,你有这个:

<li><a href = "/HTS/about-us.php"> ABOUT US  </a></li>
<li><a href = "service.php"> SERVICES </a></li>
<li><a href = "download.php"> DOWNLOAD  </a></li>

仍然从不使用find()但使用这个:

var href = $(this).children('a').attr('href');
于 2012-12-23T12:42:23.363 回答
0

首先您应该删除该类,然后添加该类,您可以参考 Jquery 文档以获取更多信息: http ://api.jquery.com/addClass/

$(this).removeClass(".linkbar li").addClass('current');

你绝对应该把 li 标签放在 ul 里面

于 2012-12-23T12:49:48.533 回答