我需要一些东西来增加表示长度的字符串值(CSS边距)
当前的解决方案是:
function incPx(a,b){
return parseInt(a) + parseInt(b) +'px';
}
incPx($(el).css('margin-left'), '10px')
也许有一个jQuery插件可以解决这个问题,可以与其他单位(如“px”)一起使用。
我需要一些东西来增加表示长度的字符串值(CSS边距)
当前的解决方案是:
function incPx(a,b){
return parseInt(a) + parseInt(b) +'px';
}
incPx($(el).css('margin-left'), '10px')
使用 jQuery 1.6+ 版本,你可以像 .animate()
方法一样,通过 +=
或 -=
来传递相对值给 .css()
方法:
$(el).css('margin-left', '+=10px');
.css()
接受类似于.animate()
的相对值。 相对值是以+=或-=开头的字符串,用于增加或减少当前值。例如,如果元素的padding-left为10px,则.css("padding-left","+ = 15")
将导致总padding-left为25px。其他人已经建议使用 jQuery.css()
的相对值,但请记住,您可以轻松地使用 parseInt
将类似 50px
的字符串转换为 Number
,如下所示:
console.log(parseInt('50px', 10));
// 50
function incPx(a, b){
a = parseInt(a, 10) || 0;
b = parseInt(b, 10) || 0;
return (a + b) +'px';
}
不要忘记传递一个基数为10,更多示例:使用 parseInt(MDN)的示例
radix
!如果你不指定,JavaScript 可能会为你选择一个(例如 8
或 16
)。例如,08px
将变成 10
,因为当字符串以 0
开头时,JS 默认使用 radix
8
... - Peter-Paul van GemerdenparseInt()
在这种情况下非常有用。感谢您提醒我们!+1 - Tarikfunction incPx (val, amt) {
var nv = parseInt(val.replace(/[^0-9]/, ''), 10);
return (
(nv ? nv : 0) + (amt || 1)
)+'px';
};
console.log(incPx('10px')); // 11px
console.log(incPx('let us hasten to the zoo, post haste!')); // 1px
console.log(incPx('10px', 10)); // 20px
console.log(incPx('10px', -2)); // 8px
试一下:http://jsfiddle.net/jxU6Q/2/
文档