一个方法里面的Jquery数学运算

时间:2014-05-27 17:44:04

标签: jquery math methods

我试图做这样的事情:

var $ul = $('.f-ul');
var ulMT = $ul.css("marginTop");
$ul.css({"marginTop":"" + math(ulMT+40) + ""px","opacity":"0"});

但我知道这是错的。有什么解决方案吗?

1 个答案:

答案 0 :(得分:3)

$ul.css({"marginTop":"" + math(ulMT+40) + ""px","opacity":"0"});
//                                        ^^ syntax error

除了语法错误之外,它应该可以正常工作。请注意语法突出显示在那一点上是如何搞乱的?这应该是你不正确终止字符串的第一个线索。

如果你删除了额外的“你得到:

$ul.css({"marginTop":"" + math(ulMT+40) + "px","opacity":"0"});

我假设您在某处定义了一个名为math的函数。如果您不是,而您想要做的就是添加两个号码,则根本不需要math()来电。

$ul.css({"marginTop":"" + (ulMT+40) + "px","opacity":"0"});

另外,我可以建议进行一些编辑,以便更容易阅读吗?

$ul.css({
  marginTop: "" + (ulMT+40) + "px",
  opacity: "0"
});

最后,$ul.css("marginTop");不会返回数字。它返回一个类似"16px"的字符串。这意味着你正在做这样的事情:

var ulMT = "16px";
var newMT = ulMT + 40 + "px";
console.log(newMt); // "46px40px"

这不是你想要的。您需要将该边距值解析为整数,以便将其用于数学运算。这是通过parseInt(x, 10);完成的,其中x是整数所需的字符串。

var ulMT = parseInt($ul.css("marginTop"), 10);

证明它有效:http://jsfiddle.net/cYDU2/