我有一个与列表和使用nth-child有关的问题。
我有两个由选择器定位的列表,我正在尝试访问各个元素。
在我的小提琴例子中,我预计第五项是黄色而不是青色。
当选择器定位多个列表时,它们是否未组合成一个列表?
ul li:nth-child(5){
background-color: yellow;
}
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<ul>
<li>a</li>
<li>b</li>
</ul>
https://jsfiddle.net/1q66hwgg/
谢谢! S上。
答案 0 :(得分:1)
不,他们没有合并到一个..
ul li:nth-child(5)
选择特定li
的第5个ul
子项,而不是将所有ul
合并,然后选择第5个孩子。
然而,您可以合并ul
,然后将所需的样式应用于合并的li
USING JavaScript的第5 ul
行。以下是使用纯JS - https://jsfiddle.net/1q66hwgg/6/
代码是 -
var ul = document.getElementsByTagName('ul');
var li = [];
for(var i=0; i< ul.length; i++) {
var item = ul[i].querySelectorAll('li');
for(var j=0; j< item.length; j++) {
li.push(item[j]);
}
if(li[4]) {
li[4].style.backgroundColor = "yellow";
break;
}
}
答案 1 :(得分:1)
你的小提琴就像你想要的那样工作。这个问题:
当选择器定位多个列表时,它们是否未组合成一个列表?
答案是否定的。两个列表是独立的,如果您定位ul li
,则选择所有li
但未合并的所有ul
。
为了合并多个ul
,您需要删除除最后一个ul
之外的每个ul
的结尾,以及除第一个之外的每个ul
的开头。
我用一段javascript帮助你组合所有var arrLi = [];
$('ul').each(function() {
$(this).find('li').each(function() {
arrLi.push($(this).html());
});
$(this).remove();
});
var ul = $('<ul></ul>').attr({id:"ulid"}).appendTo("#wrap");
for(var i in arrLi) {
var li =$('<li>'+arrLi[i]+'</li>');
li.appendTo(ul);
}
https://jsfiddle.net/1q66hwgg/2/
代码:
Handlebars.registerHelper( 'concat', function(path) {
return "/etc/path" + path;
});
答案 2 :(得分:0)
我已经通过CSS select first element with a certain class回答和nth-of-child
并找到了这个...请检查
正如Marcos和Paulie所说,两个列表将是独立的,对于两个或所有(如果你使用更多)你必须应用不同的CSS规则,但如果你想通过一个父母那么你可以跟我的小提琴(帮助Paulie_D和Lea)。您可以在外部div
/ ul
答案 3 :(得分:0)
快速jQuery解决方案虽然 非常 广泛作为选择器,但建议进一步限制选择器。
$('li').eq(4).css('backgroundColor', 'red');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<ul>
<li>a</li>
<li>b</li>
</ul>
答案 4 :(得分:0)
正如其他一些答案所说的那样;不,当使用nth-child时,列表不会合并为一个。
您希望第二个button_green
中的第一个li
为黄色,仅使用CSS,您可以使用此功能:
ul