我需要一些东西来增加代表长度的字符串值(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 的东西呢?与“px”的其他单位合作
使用 jQuery 1.6+,您可以将相对数量传递给.css()
,由+=
或表示-=
,类似于.animate()
:
$(el).css('margin-left', '+=10px');
从 jQuery 1.6 开始,.css()
接受类似于.animate()
. 相对值是一个以 += 或 -= 开头的字符串,用于增加或减少当前值。例如,如果一个元素的 padding-left 为 10px,则.css( "padding-left", "+=15" )
总 padding-left 为 25px。
此处讨论“jQuery方式”的其他答案是完全有效的。但是,我想包括一种使用类似于 OP 使用的方法的方法,它也可以与“vanilla”javascript 一起使用。
请注意,就目前而言,OP 的代码可以正常工作 - 这基本上是相同的事情,但需要更加注意提供默认值
function 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/
文档
其他人已经建议了jQuery.css()
的相对值,但请记住,您可以轻松parseInt
地将字符串转换50px
为 a 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';
}
不过,不要忘记通过radix
10 分。更多示例:示例:使用 parseInt (MDN)