如何从最后一个列表项中删除边框并选择:nth-​​child(多个项目)

时间:2012-09-26 20:34:37

标签: jquery css jquery-selectors css-selectors

如何选择第三个链接以删除右边框?前三个是文本链接,我想从最后一个文本链接中删除右边框。最后两个是按钮。我不希望按钮之间或按钮的末端。我无法相信我遇到了多少麻烦。它可能是一个简单的解决方案,但它让我永远想到了浏览器。感谢。

的Javascript

<script language="javascript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script language="javascript">
        $(document).ready(function() {
        $("ul.subnavigation li:nth-child(3)").addClass("last-child");
    });
        </script>

HTML

<ul class="subnavigation">
                <li><a href="$sign_in_url" id="Program" rel="nofollow" ></a>Program </li>
                <li><a href="$sign_in_url" id="About" rel="nofollow" >About </a> </li>
                <li><a href="$sign_in_url" id="faq" rel="nofollow" >How to/FAQs</a> </li>
                <li><a href="$sign_in_url" id="register" rel="nofollow" class="btn_register hide-text">Register</a> </li>
                <li><a href="$sign_in_url" id="signin" rel="nofollow" class="btn_signin hide-text">Sign in</a></li></ul>

CSS

ul.subnavigation {  
    font-family:Arial, sans-serif; 
    font-weight:bold; 
    font-size:16px;
    color:#333333; 
    list-style:none;
    }

.subnavigation li{
    display:inline;
    border-right:1px solid #ccc;
}

.subnavigation li:last-child{
    display:inline;
    border-right:0px;
}


.last-child {border:none;}

.subnavigation li a   {
    text-decoration:none;
    padding:0 10px 0 10px;
    line-height:18px;

    }

.subnavigation li a:hover {
    color:#2274ac;
    }


.subnavigation a.btn_register {
    background:url(../images/nt_btn-register.png) no-repeat;
    width:66px; 
    height:23px;
    display:inline-block;
    margin:0 5px 0 0;
    float:right;
    text-indent:-999px;
    }

.subnavigation a.btn_signin {
    background:url(../images/nt_btn-signin.png) no-repeat;
    width:56px; 
    height:23px;
    display:inline-block;
    margin:0 10px 0 5px;
    float:right;
    text-indent:-999px;
    }

.hide-text {
text-indent: 100%;
white-space: nowrap;
overflow: hidden;
}

JS FIDDLE here

3 个答案:

答案 0 :(得分:2)

你不需要jQuery。这是纯CSS - DEMO

.subnavigation li:nth-child(n+3) {
    border: 0;
}

<强>更新

上述代码不适用于较旧的IE-s - :nth-child browser support

为了使其向后兼容,您仍然必须使用jQuery - DEMO

$(function() {
    $(".subnavigation").find("li:gt(1)").css("border", 0);
});

答案 1 :(得分:1)

将您的CSS更改为更具体

li.last-child {border-right:0px;}

然后jQuery你可以使用.slice()获取索引2的li个元素&gt;删除右边框

$(document).ready(function() {
   $("ul.subnavigation li").slice(2).addClass("last-child");
});​

http://jsfiddle.net/A46Ka/2/

答案 2 :(得分:0)

这也应该有效

$("ul.subnavigation li:gt(1)").addClass("last-child");

添加此样式,它应该可以正常工作

.last-child 
{
   border-right:0px !important;
}

设置!important 将覆盖默认样式

Check this FIDDLE