将像素添加到jquery .css()左侧属性

时间:2011-07-04 03:48:43

标签: jquery css

这是我的代码:

var lef=$(this).css("left");
var top=$(this).css("top");
alert(lef);
$(this).after("<div class='edit cancel' style='position:absolute;top:"+top+";left:"+lef+"'>Cancel</div>");

现在声明var lef=$(this).css("left") + 150似乎不起作用。我想获得左边的属性并添加150像素

我该怎么做?

感谢。

6 个答案:

答案 0 :(得分:63)

从jQuery 1.6开始,只需添加或减去当前值,即可轻松完成此操作。例如,要添加150px:

$(this).css("left", "+=150")

http://api.jquery.com/css/#css-properties

  

从jQuery 1.6开始,.css()接受类似于的相对值   .animate()。相对值是以+ =或 - = to开头的字符串   递增或递减当前值。例如,如果是元素   padding-left是10px,.css(“padding-left”,“+ = 15”)会导致   总填充量 - 左侧25px。

答案 1 :(得分:43)

这是最简单的方法(对于一般情况):

$(this).css('left', '+=150');
$(this).css('top', '-=100');

http://api.jquery.com/css/#css-properties

  

从jQuery 1.6开始,.css()接受类似于的相对值   .animate()。相对值是以+=-=开头的字符串   增加或减少当前值。例如,如果是   element的padding-left是10px,.css( "padding-left", "+=15" )   将导致总填充量为25px。


如果您需要“手动”(例如,作为创建新元素的一部分):

var left = parseInt($(this).css('left')) + 150;
var top = parseInt($(this).css('top'));

$(this).after('<div style="top: ' + top + 'px; left: ' + left + 'px; position: absolute">Cancel</div>');

您需要使用parseInt,因为.css('left')会返回150px。然后,您必须将px作为内联样式的一部分放回。

答案 2 :(得分:2)

我简化了thirtydot的答案。 您可以将此jQuery函数用于要添加像素的任何属性。

jQuery.fn.addPixelsTo = function(property, pxls) {    
     return $(this[0]).css(property, (parseInt($(this[0]).css(property).substr(0,2))+pxls)+'px');
}

示例:

$('#element').addPixelsTo('border-top-width', 30);

答案 3 :(得分:2)

试试这个

var WinW=jQuery(window).width();
var lft =parseInt(WinW/2);
jQuery(".div").css("left" , (lft));

它会将div放在页面的中心,然后它会正常工作....

答案 4 :(得分:1)

可以尝试

$(this).css("left", function(){
return ($(this).css("left")+150);
});

任何复杂的修改

答案 5 :(得分:0)

var lef=$(this).css("left")

此行返回一个字符串,您可以使用150运算符连接+。您需要先将$(this).css("left")字符串转换为数字。

jsfiddle演示来证明我的观点。

因此,您可以通过以下方式执行此操作 -

var lef = partInt($(this).css("left")) + 150;

现在您将获得添加而不是字符串连接。