JQuery第n个子项工作不正常
我正在使用JQuery的第n个子选择器使用一类photo\u post\u缩略图每第3个div更改一次边距,但它每第2个div更改一次边距JQuery第n个子项工作不正常,jquery,css-selectors,Jquery,Css Selectors,我正在使用JQuery的第n个子选择器使用一类photo\u post\u缩略图每第3个div更改一次边距,但它每第2个div更改一次边距 <div class="postbox photo_post_thumbnail"> blah blah </div> <div class="postbox photo_post_thumbnail"> blah blah </div> <div class="postbox
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
谁能看出我做错了什么
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
站点
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
$('.photo_post_thumbnail:nth-child(3n)').css('margin-right', '0px');
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
HTML标记
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
这样做是因为在这些div之前有一个
,使该div成为第四个孩子,而不是第三个:)
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
n子项
选择器一开始有点混乱,因为它是父项的n子项
,而不仅仅是与父项的选择器匹配的n子项
,选择器不承载此选择器的位置
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
要获得所需的div,请执行以下操作:
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
$('.photo_post_thumbnail:nth-child(3n+1)').css('margin-right', '0px');
替代解决方案:
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
<div class="postbox photo_post_thumbnail">
blah blah
</div>
$('.photo_post_thumbnail').each(function(i) {
i=(i+1);
if(i%3==0){
$(this).css("margin-right","0px"));
}
});
是的,我完全同意:D+1我很困惑(在看了他的页面之后),这不应该是该类标签中的第n个实例吗?为什么兄弟姐妹h1很重要?他应该用:eq(n)来代替吗?我想我需要研究第n个子元素:)(duh,父元素的第n个子元素,而不是所选元素的第n个实例:)我应该先读更多:)@Mark-这是我提到的令人困惑的部分:)
n
不关心类选择器,:第n个子元素
是它自己的选择器,就像:last
或:not()
,等等……因此它与class=“photo\u post\u缩略图”
和:n子级(3n+1)
的事实相匹配,n
不关心作为不同选择器的类。在你之前,你的部门是第三个孩子,有那个班级,所以它是匹配的。你想要的是为
匹配该类和每第三个child+1偏移量,这更有意义吗?我想你的意思是$('.photo\u post\u缩略图')。每个(函数(I){
这里,$.each()
需要一个集合作为第一个参数:)太好了-谢谢。我仍然对(3n+1)有问题上面的解决方案,但您的解决方案马上就可以很好地工作。