【问题标题】:CSS nth-child property does not work correctly when dynamically adding itemsCSS nth-child 属性在动态添加项目时无法正常工作
【发布时间】:2013-07-19 00:04:24
【问题描述】:

我的页面中定义了一些 div

<div class="alternating">random text</div>
<div class="alternating">random text</div>
<div class="alternating">random text</div>
<div class="alternating">random text</div>
<div class="alternating">random text</div>

我添加了一个 css 属性

.alternating:nth-child(even){
    background: #FF0000;
}

在加载页面时,一切看起来都很好,偶数行都是彩色的。 但是当我向这个 div 的父级添加一个新的 div(使用 Knockout 和 jquery)时,新添加的行没有显示正确的颜色。 这意味着如果我的最后一行是奇数(没有颜色),新添加的 div 也会出现没有颜色。 或者,如果最后一个 div 是偶数(带有颜色),则新添加的 div 也带有颜色。

但之后又恢复正常了。 我的问题只是添加了第一个 div。

有什么想法吗?

【问题讨论】:

  • 你能贴出你用来动态添加div的代码吗?
  • 您使用的是什么浏览器?是否所有浏览器都会出现相同的错误?
  • 如果您需要,这是第一步:jsfiddle.net/mXMDD。这是您的代码和基本想法,似乎可以正常工作。告诉我们原因是什么(可能是浏览器问题?)。
  • 如果加载页面后添加div,这种情况下添加div后需要重新加载css文件,
  • 据我所知,它工作正常。 jsfiddle.net/6tPwU ...也许您可以使用以下代码重置编号:$('.alertnating').removeClass('alternating').addClass('alternating');

标签: css css-selectors


【解决方案1】:

这里有一个小FIDDLE,我从 DOM 中的 div 开始,然后单击添加它们。

相关:JS

$('.button').click(function() {
    $('.holder').append("<div class='inside'>dynamic div</div>");
});

相关的 CSS

.holder {
    width: 300px;
    height: 400px;
    border: 1px solid black;
}
.inside {
    height: 30px;
    border: 1px solid black;
}
.inside:nth-child(even) {
    background-color: blue;
}

【讨论】:

  • 感谢您的出色回答,它帮助我修复了一些其他错误。但我的主要问题确实是我出现了随机隐藏的行。
猜你喜欢
  • 2011-02-11
  • 1970-01-01
  • 2014-11-12
  • 2019-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 2017-07-26
相关资源
最近更新 更多