長さを表す文字列値をインクリメントするものが必要です (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が使用しているものと同様のアプローチを使用するメソッドを含めたいと思いました。これは、「バニラ」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
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の a を渡すことを忘れないでください。その他の例:例: parseInt (MDN) の使用