在循环内增加以改变css值不起作用

时间:2015-04-16 06:25:36

标签: javascript jquery zepto

我试图增加当前' top'的价值。在一个foreach内的财产价值。

http://jsfiddle.net/fqmnksgL/

var percent = 50;
$('div').forEach(function (obj, i) {
    $(obj).css('top', $(obj).css('top') + percent);
});

上面的代码有什么问题吗?

3 个答案:

答案 0 :(得分:2)

forEachArray的一部分。请改用each。您可以使用函数回调来增加当前元素的top属性。

var percent = 50;
$('div').each(function() {
    $(this).css('top', function(_, top){ 
        return parseInt(top, 10) + percent;
    });
});

但它并不像你想象的那样有用。也许你应该尝试使用$.fn.prev

的其他答案

答案 1 :(得分:0)

您无法将百分比(%)添加到px值,您需要转换其中一个

var px = 50;
$('div').each(function () {

    $(this).css('top', parseInt($(this).prev().css('top')) + px);
});

http://jsfiddle.net/fqmnksgL/6/

答案 2 :(得分:0)

你可以尝试

var percent = 50;
$('div').css('top', function(i, obj) {
  return i * percent;
});
div {
  width: 50px;
  height: 50px;
  background: red;
  position: absolute;
  top: 10px;
  left: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>