如果page url = anchor in list,则触发mouseover + make bold

时间:2011-11-01 09:16:39

标签: javascript jquery onload html-lists

标题说明了一切。我想要实现的是检查菜单中的onload url(多个ul,因为它也有子菜单),如果它等于,则将其设为粗体并触发鼠标悬停事件:

$(document).ready(function(){
    $('#content > ul > li a[href]').filter(function() {return this.href.pathname === window.location.pathname;}).css('font-weight','bold');
    $('#content > ul > li a[href]').filter(function() {return this.href.pathname === window.location.pathname;}).trigger('mouseover');
});

<ul id="menu">
    <li><a href="#" onmouseover="displayID('biography');">Biography</a></li>
    <li><a href="/tagged/Commercial_photography" onmouseover="displayID('commercial-photography');">Commercial photography</a></li>
    <li><a href="/tagged/Fine_art_photography" onmouseover="displayID('fine-art-photography');">Fine art photography</a></li>
    <li><a href="/tagged/Action" onmouseover="displayID('action');">Action</a></li>
    <li><a href="/tagged/Video" onmouseover="displayID('video');">Video</a></li>
    <li><a href="#" onmouseover="displayID('links');">Links</a></li>
</ul>

我认为只有一个非常简单的错误,因为我对jquery并不熟悉,所以我非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

链接的href属性是一个字符串,没有pathname属性。

使用this.pathname代替this.href.pathname来解决您的问题:

function(){
    return this.pathname === location.pathname &&
           !/^#/.test(this.getAttribute('href'))   //The href at HTML may not 
}                                                 //start with #

评论后编辑:
getAttribute方法用于获取原始href属性,因为this.href不包含#,而是http://fullpath/etc/file#