3

我需要一些东西来增加代表长度的字符串值(css边距)

目前的解决方案是:

function incPx(a,b){
     return parseInt(a) + parseInt(b) +'px';
}
incPx($(el).css('margin-left'), '10px')

但可能有一个 jQuery 的东西呢?与“px”的其他单位合作

4

4 回答 4

6

使用 jQuery 1.6+,您可以将相对数量传递给.css(),由+=或表示-=,类似于.animate()

$(el).css('margin-left', '+=10px');
于 2012-08-17T17:07:17.553 回答
1

从 jQuery 1.6 开始,.css()接受类似于.animate(). 相对值是一个以 += 或 -= 开头的字符串,用于增加或减少当前值。例如,如果一个元素的 padding-left 为 10px,则.css( "padding-left", "+=15" )总 padding-left 为 25px。

来源:http ://api.jquery.com/css/

于 2012-08-17T17:08:28.880 回答
1

此处讨论“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/

文档

于 2012-08-17T17:14:13.207 回答
1

其他人已经建议了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';
}​

不过,不要忘记通过radix10 分。更多示例:示例:使用 parseInt (MDN)

于 2012-08-17T17:14:52.520 回答