css函数在JQuery中不能很好地工作

时间:2012-03-12 02:58:36

标签: jquery css

以下是我的代码:

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中这样做。 我想知道为什么会这样? 这个问题有很多解决方案,比如设置边距或填充属性。

3 个答案:

答案 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')