我有一些<li>
元素,如下所示:
<ul class="some_class">
<li></li>
<li></li>
...
<li></li>
</ul>
在我的css文件中,我有:
.some_class > li
我想通过jQuery更改一些li
元素。我的想法是有这样的事情:
<ul class="some_class">
<div id="some_id">
<li></li>
<li></li>
</div>
...
<li></li>
</ul>
并按$("#some_id").html()
更改。但由于css,它失败了。我不想改变css,导致其模板css,并且很难对其进行更改。
是否还有其他方法可以实现此目的?
答案 0 :(得分:3)
鉴于您提供的两个源代码,您的问题不是每个人说的CSS,而是您更改DOM的方式,使CSS无效:
解决方案1:
变化:
.some_class > li
要:
.some_class li
因为在你的代码操作中,<li></li>
现在是some_class
的直接后代,你的CSS被破坏了。在CSS中>
表示直接后代。
解决方案2:
如果您不想更改CSS,只需在要更改的<li>
中添加一个类,但不要将它们嵌套在另一个div中。
注意:鉴于有关无效HTML的评论:解决方案2不会导致HTML出现问题,对于解决方案1,请将DIV
替换为另一个UL
答案 1 :(得分:0)
有很多方法可以定位元素,特别是使用jQuery这是一件轻而易举的事。
当然,你可以为你想要定位的每个元素添加一个类,但是有很多方法可以在不改变你的标记的情况下完成它。例如,您可以使用eq()在父级中使用元素的实际索引进行选择;使用像第一个孩子,最后一个孩子的伪类;使用jQuery扩展,如:even或:odd;使用nth-child选择可重复的模式,比如每第三个元素(nth-child:(3n + 3))......