0

我正在使用 Jquery 来选择包含某个 href 链接的列表中的单个成员。

到目前为止,这是我的代码:

<script type="text/javascript" 
 src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
    var page = jQuery(location).attr('href'); 
    if(page $= "home"){
        $("'li':contains('index')").addClass("active")};
    if(page $= "features"){
        $("'li':contains('features')").addClass("active")};
    if(page $= "people"){
        $("'li':contains('people')").addClass("active") };
    if(page $= "accounts"){
        $("'li':contains('accounts')").addClass("active")};
    if(page $= "blog"){
        $("'li':contains('blog')").addClass("active")};  
    if(page $= "faq"){
        $("'li':contains('faq')").addClass("active")};                      
});
</script>

HTML 代码如下所示:

<ul id="navigation">
  <li><a href="/index" title="Home">Home</a></li>
  <li><a href="/features" title="Features">Features</a></li>
  <li><a href="/people" title="People">People</a></li>
  <li><a href="/accounts" title="account">accounts</a></li>
  <li><a href="/blog" title="Blog">Blog</a></li>
  <li><a href="/faq" title="FAQ">FAQ</a></li>
</ul>

我似乎无法让它工作?我是否正确使用了包含功能?

4

1 回答 1

2

:contains搜索innerText元素的。你想要:has,它会扫描innerHTML

此外,对于 href 属性,您需要使用属性选择器: [href="index"]

$("li:has(a[href*='index'])")

这将选择<li>包含<a>带有 href 的标签的"index".

更新:

if(page $= "home")

你实际上不能那样做。如果您想查看一个字符串是否以另一个结尾,请使用正则表达式(或子字符串)。

jQuery(location).attr('href'); 

为什么要为此使用 jQuery?做吧location.href。更好的是,使用location.pathname. 然后,您可以丢失if块,只需执行以下操作:

var page = location.pathname;
$("li:has(a[href*='"+page+"'])").addClass("active");

(你可能需要做page.replace('home', 'index')

于 2012-07-12T16:17:43.753 回答