以下是我的代码:
var topPix = $('#cc').css('top');
var leftPix = $('#cc').css('left');
$('#testFrame').css('top', topPix).css('left', leftPix);
我给'testFrame'一些样式,比如'position:absolute;'等等。
它运作良好,但是,我想为'top'属性设置5px。然后我写下面的代码:
$('#testFrame').css('top', topPix+'+=5px').css('left', leftPix);
或:
$('#testFrame').css('top', topPix+'+=5').css('left', leftPix);
它不起作用,此外,'top'的值看起来像减去一个中心像素。 我在IE8中这样做。 我想知道为什么会这样? 这个问题有很多解决方案,比如设置边距或填充属性。
答案 0 :(得分:3)
如果您检查了topPix的值,您会发现它类似于"10px"
,因此向其添加"+=5px"
会导致"10px+=5px"
这不是有效的CSS值或.css()
支持的任何内容。
您可以在此处看到:http://jsfiddle.net/jfriend00/jtJ44/
如果您执行parseInt(topPix, 10)
,它会将其转换为一个数字,然后您可以将其添加5,然后将“px”添加到该数字。
$('#testFrame').css("top", (parseInt(topPix, 10) + 5) + "px");
或者,您可以使用.css()
方法的特殊功能来使用+=
运算符并执行此操作:
$('#testFrame').css("top", topPix).css("top", "+=5");
+=
的{{1}}特殊运算符不能像您尝试使用它一样工作。您只将它应用于当前值。如果不先将其他值作为当前值,则无法将其与其他值组合。
答案 1 :(得分:0)
topPix+'+=5'
这将被评估为字符串,而不是数字。将值计算到变量中,然后在.css函数中设置该变量。
答案 2 :(得分:0)
CSS不能做数学,所以在.css('top', topPix+'+=5')
第二个参数应该是像素数,即.css('top', (topPix + 5) + 'px')