JQuery - 如果href等于某事,如何将类添加到某个范围

时间:2014-11-29 04:04:52

标签: javascript jquery html css

我在页面上有一个菜单。我想将class username添加到我的用户名范围,其中包含a href;等于?m=user_admin&p=edit_user&user_id=1

请记住,无论用户名是什么,我都希望它添加此类!因为用户名会一直变化。我该怎么办?

菜单示例



<div class="menu">
    <ul>
        <li><a class="user_menu_link_selected" href="#"><span>Dashboard</span></a></li>
        <li><a class="user_menu_link" href="#"><span>Monitor</span></a><li>
        <li><a class="user_menu_link" href="#"><span>Admin</span></a></li>
        <li><a class="user_menu_link" href="#"><span>FTP</span></a></li>
        <li><a class="user_menu_link" href="?m=user_admin&p=edit_user&user_id=1"><span>my username</span></a></li>
    </ul>
</div>
&#13;
&#13;
&#13;

我尝试了这个JS代码,但它将类添加到所有跨度中。我只想在我的用户名范围上添加它,因为href等于?m=user_admin&p=edit_user&user_id=1

&#13;
&#13;
	$('ul a').each(
		function(){
			if($(this).attr('href')=="?m=user_admin&p=edit_user&user_id=1"){
			$('.menu > ul > li > a > span').addClass("username");
			}
	});	
&#13;
&#13;
&#13;

5 个答案:

答案 0 :(得分:3)

$('ul a').each(
    function(){
        if($(this).attr('href')=="?m=user_admin&p=edit_user&user_id=1"){
            $(this).find('span').addClass("username");
        }
});

答案 1 :(得分:0)

以下行应参考this

$('.menu > ul > li > a > span').addClass("username");

可能

$(this).addClass("username");

答案 2 :(得分:0)

使用CSS这里是documentation,它会选择其父span有链接的所有a

a[href='?m=user_admin&p=edit_user&user_id=1'] span {
  color:Red
}

演示 - http://jsfiddle.net/zq0fs7om/

答案 3 :(得分:0)

试试这个..

	$('ul li a').each(
		function(index){
			if($(this).attr('href')=="?m=user_admin&p=edit_user&user_id=1"){
			 $(this).children('span').addClass("username");
			}
	});	

答案 4 :(得分:0)

你可以在这里查看jsfiddle: http://jsfiddle.net/ow1478rd/

这是代码的要点:

$('ul > li > a').each(function(){
    if($(this).attr('href')=="?m=user_admin&p=edit_user&user_id=1"){
        $(this).closest("li").find("span").addClass("username");
    }
}); 

基本上这里要注意的是“最接近”将基本上搜索UP,然后“查找”将搜索DOWN DOM。因此,对于您的结构,您将前往最近的列表元素,然后在其中查找其中的跨度以更改CSS。希望这有助于人。