帮助jQuery .next

时间:2010-09-07 19:37:43

标签: jquery css

我想我可以使用.next,不确定,如果有更好的方法请告诉我。我有一个设置了UL的标签,UL中的每个LI在底部都有1px虚线边框,除了“有效”li。 “活动”选项卡具有背景图像。如果任何LI之后的LI具有活动类,我需要删除边框。

<ul id="flowtabs">
  <li><a href="t1">Analysis</a></li>
  <li><a href="t2">Manual Trading</a></li>
  <li><a href="t3" class="active">Automatic Trading</a></li>
  <li><a href="t4">Simulate</a></li>
  <li><a href="t5">Connect</a></li>
  <li><a href="t6">Extend</a></li>
</ul>

$(document).ready(function() {
    if($('#flowtabs li a').hasClass('active').next('css','border','none')
}

我希望<a href="t2"><a href="t4">删除其边框,并在li让该类处于活动状态时应用此选项。

我不认为构造是正确的,是否有更好的方法从具有“活跃”类的那个之前和之后移除LI的边界

这是一张图片来帮助:http://img693.imageshack.us/img693/5384/screenshot20100907at147.png

谢谢!

4 个答案:

答案 0 :(得分:1)

这可以满足您的具体要求,从活动<li>任意一侧的<li>移除边框:

$(function() {
    $('#flowtabs li a.active').parent('li').next().add($('#flowtabs li a.active').parent('li').prev()).css('border','none');
});

这是一个有效的演示:http://jsfiddle.net/WUu2F/

这就是我认为你真正想要的,我在你对你的问题的评论中提到过:

$(function() {
    $('#flowtabs li a.active').parent('li').prev().andSelf().children('a').css('border','none');
});

并演示:http://jsfiddle.net/k5sur/

答案 1 :(得分:1)

$(document).ready(
    function ()
    {
        $('#flowtabs li a.active').filter(function(i) { return i > 0; }).parent('li').css('border', 'none');
    }
);

http://jsfiddle.net/PxmqG/

这将删除第一个li a.active之后出现的li a.active周围的边框。


你的问题有点令人困惑,所以我想在经过第二次阅读后,我会更清楚你想要的是什么。

$(document).ready(
    function ()
    {
        $('#flowtabs li a.active').parent('li').prev('li').css('border-bottom','none').end().next('li').css('border-top', 'none');
    }
);

这将删除li之前和之后的li a.active边框$(document).ready( function () { $('#flowtabs li a.active').css('border-bottom', 'none').parent('li').prev('li').children('a').css('border-bottom','none'); } ); 。我添加了这个是因为你的解释和形象。


第3版

border

这会从您的currentprevious li标记中删除{{1}}。似乎是你从一开始就想要的,是吗?

答案 2 :(得分:0)

为什么不采用相反的方式,并使用li类为active添加下划线。

$(document).ready(function() {
    $('#flowtabs li a').hasClass('active').parent('li').css('border','none');
}

但是,如果你想这样做的话。然后有一些问题。在li active之前li呢?无论哪种方式,next都会定位a元素,而不是li。这将删除所有li的边框,但active a除外。

$(document).ready(function() {
    if($('#flowtabs li a').hasClass('active').parent('li').siblings().css('border','none')
}

答案 3 :(得分:0)

可能你可以做类似这样的事情

$(document).ready(function(){
   $('#flowtabs li a').not('.active').css('border','none');
});

这意味着任何'a'标记除了具有类'active'的标记 - &gt;删除边框。