你能把第N个孩子加到JS吗?

时间:2013-10-22 09:29:11

标签: javascript jquery jquery-selectors

我想知道是否可以在这段代码中添加某种Nth Child?

  $(function() {
    var count = $(".parent a").length;
    $(".parent div").width(function(){
        return ($(".parent").width()/count)-5;
    }).css("margin-right","5px");
  });

我想要的是让最后一个div忽略margin-right

这可能吗?

3 个答案:

答案 0 :(得分:1)

通常,您可以使用jQuery选择器,例如:last:last-child:last-of-type,并考虑您想要一个元素:not

但是,您在这里遇到的问题更多地与您何时以及如何进行宽度计算和应用CSS有关。

我会将其分解为几个步骤,首先进行宽度计算:

var count = $(".parent a").length;

$(".parent div").width(function(){
    return ($(".parent").width()/count)-5;
});

接下来将右边距应用于 last div:

以外的所有边距
$(".parent div:not(:last)").css("margin-right","5px");

这几乎让我们在那里,最后一点只是填补剩下的小差距:

$(".parent div:last").width(function() {
    return $(".parent div:last").width() + 5;
});

这应该做你想要的。你可以在这里看到一个有效的例子 - http://jsfiddle.net/jUU86/3/。我可能会用一个变量替换边距大小,这样你就不必更换多个位置了。

您可以阅读有关此处使用的选择器的更多信息:

答案 1 :(得分:1)

:last-of-type似乎就是你所需要的。我比:last:last-child更喜欢这个,因为你更有可能想要最后一个类型(一个div),而不是最后一个孩子。

$(function () {
    var count = $(".parent a").length;
    $(".parent div").width(function () {
        return ($(".parent").width() / count) - 5;
    });
    $(".parent div:not(:last-of-type)").css("margin-right", "5px");
});

答案 2 :(得分:0)

您可以将其添加到奇数/偶数上:count%2