我有一个延伸到多行的管道列表。使用 jquery 如何删除每行第一个元素的列表分隔符。
像这样:
红色 | 绿色 | 蓝色的
紫色 | 黑色 | 白色的
紫 | 黄色 | 品红
到目前为止,我有这个(来自stackoverflow的答案):
jQuery :
var maxWidth = 350, // Your div max-width
totalWidth = 0;
$('#footer .right .links ul li').each(function(){
var currentWidth = $(this).outerWidth(),
nextWidth = $(this).next().outerWidth();
totalWidth += currentWidth;
if ( (totalWidth + nextWidth) > maxWidth ) {
$(this).css('border-left', 'none');
totalWidth = 0;
}
});
CSS:
#footer .right .links {
float:left;
width: 350px;
border:1px solid green;
}
#footer .right .links ul {
margin:0;
padding:0;
text-align:right;
}
#footer .right .links ul li {
display: inline-block;
list-style-type:none;
margin: 0 0 2px 0;
font-size: 12px;
padding:0 5px 0 7px;
border-left:1px solid #7d7d7d;
}
#footer .right .links ul li:first-child {
padding-left:0;
border-left:none;
}
HTML:
<ul>
<li><a href="">Red</a></li>
<li><a href="">Green</a></li>
<li><a href="">Yellow</a></li>
....
</ul>
编辑(基于浮士德答案的解决方案): 用户浮士德有正确的答案,但必须稍微调整一下。所有元素的左偏移量为:
720 763 830 900 703 776 854 944
如您所见,每行第一个元素的左偏移量不是 0。我注意到每行第一个元素的左偏移量小于前一个元素。
这是调整后的jquery:
$('#footer .right .links > ul li').each(function(){
var $thisLi = $(this);
var offset_left = $thisLi.position().left;
if ($thisLi.prev().position()) {
var offest_prev_left = $thisLi.prev().position().left;
} else {
var offest_prev_left = 0;
}
$('#test').append(offset_left + ' ');
if(offset_left < offest_prev_left){
$thisLi.css('border-left', 'none')
}
});