JQuery第n个子项工作不正常

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

我正在使用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 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)有问题上面的解决方案,但您的解决方案马上就可以很好地工作。