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

Ana*_*nt 33 css jquery

这是我的代码:

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>");
Run Code Online (Sandbox Code Playgroud)

现在声明var lef=$(this).css("left") + 150,似乎没有用.我想得到左边的属性并添加150像素

我怎样才能做到这一点 ?

谢谢.

may*_*ron 63

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

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

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

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


thi*_*dot 44

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

$(this).css('left', '+=150');
$(this).css('top', '-=100');
Run Code Online (Sandbox Code Playgroud)

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

从jQuery 1.6开始,.css()接受类似的相对值 .animate().相对值是以+=-= 以递增或递减当前值开头的字符串.例如,如果元素的填充左边是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>');
Run Code Online (Sandbox Code Playgroud)

你需要使用parseInt因为.css('left')返回150px.然后你必须把它px作为内联样式的一部分.

  • `.css('top')`返回`145px`.`.css('left')`返回`150px`.如果你试图添加"150",你最终会得到"150px150".我的编辑答案应该是正确的,使用`parseInt`.`parseInt($(this).css("left"))+ 150`将以"300"结束,而"left:300"将不起作用,因此你需要追加`px`. (2认同)