2014-10-01 47 views
1

对于一个动态网站,我试图创建一个项目列表,其中最后的li(如果奇数)是100%宽。选择ul与奇数的

我得到了这个工作,我的问题是,下一个UL,也是这样,而最后li并不奇怪。

基本上:如果列表中的最后一个LI是奇数,则表示为100%。

我有一个困难时期试图解释自己,所以希望我的小提琴更有意义:

var target = $("ul.odd-list > li:last-child"); 
if (target.is(":nth-child(odd)" )) { 
    target.css("width", "98%"); 
} 

demo

提前感谢!

ps,我知道我可以从第二个ul删除类。但是如果决定增加更多li的话,那个人必须在那里。

+0

你为什么在jQuery中做这个而不是纯css? – epascarello 2014-10-01 13:55:01

+0

我不希望每一个:最后一个孩子是100%。只有那些奇怪的。如果该项目是平等的,则不需要做任何事情。 jQuery是我最合理的选择。如果你能告诉我怎么用css来做,请告诉我! – 2014-10-01 14:07:41

+0

所以你说:'ul.odd-list> li:n-child(奇数):最后一个孩子宽度:98%; }' 将无法​​工作? http://jsfiddle.net/z5q2572t/1/编辑:我看到接受的答案是一样的。 ;) – epascarello 2014-10-01 14:12:53

回答

1

那么你的默认宽度看起来是48%的宽度。让它保持它喜欢它,并在需要的地方应用98%的宽度。

在CSS

li { 
    width : 48%; 
} 
li:last-child:nth-child(odd) { 
    width: 98%; 
} 

如果你真的想使用jQuery来设置最后宽:

$('ul.odd-list > li:last-child:nth-child(odd)').css('width', '98%') 

注:TrueBlueAussie答案是正确的太多,但我不喜欢使用 '如果'哪里不需要它。

+0

我不知道你可以添加:最后一个孩子和:第n个元素。所以谢谢你。 – 2014-10-01 14:10:42

+0

重新引用。我不喜欢'if',因此第二个版本:) – 2014-10-01 14:11:59

+0

@FreekvanderHorst这在使用hover时特别有用;) – Dionys 2014-10-01 14:22:57

2

您需要单独测试每一个仿佛匹配元素中的任何一个满足条件is将返回true:

的jsfiddle:http://jsfiddle.net/TrueBlueAussie/Ln5uf9y1/5/

var target = $("ul.odd-list > li:last-child"); 
target.each(function() { 
    if ($(this).is(":nth-child(odd)")) { 
     $(this).css("width", "98%"); 
    } 
}); 

,你可以减少到一个选择:

$("ul.odd-list > li:last-child:nth-child(odd)").css("width", "98%"); 

的jsfiddle:http://jsfiddle.net/TrueBlueAussie/Ln5uf9y1/7/

+0

作品,我是_so_关闭:-)谢谢分配! – 2014-10-01 13:58:23