为每个元素应用不同的CSS?

时间:2015-01-30 13:21:46

标签: javascript jquery css dom

我尝试使用特定类遍历父li的{​​{1}}个元素,并为每个元素分配一个可变边距,具体取决于前一个元素的高度。循环:



ul




我显然做错了。你能救我一下吗?

1 个答案:

答案 0 :(得分:4)

您未在该功能中正确引用this。你需要用$()包装它把它变成一个jQuery对象,既可以设置css又可以获得高度......

$(function() {
  var staticOffset = 66;
  var previousHeight = null; // initialization
  $(".timeline-tidy li").each(function() {
    if (previousHeight) { // exclude the first element
      var heightOffset = previousHeight - staticOffset;
      $(this).css('margin-top', heightOffset * -1); // negative margin
    }
    previousHeight = $(this).height();
  });
});

但是,由于您不止一次这样做,我建议您创建一个本地引用,例如......

$(function() {
    var staticOffset = 66;
    var previousHeight = null; // initialization
    $(".timeline-tidy li").each(function() {
        var $this = $(this);
        if (previousHeight) { // exclude the first element
            var heightOffset = previousHeight - staticOffset;
            $this.css('margin-top', heightOffset * -1); // negative margin
        }
        previousHeight = $this.height();
    });
});