2015注意:每个人都应该仔细阅读他们的旧问题,并为他们的到来感到鼓舞。这段代码有很多问题 - 很棒。
此代码在Firefox中完美运行,在IE中以“负”结尾的行完成;休息。我不知道如何解决它! Argghhh!
$(".topline strong").digits().each(function () {
s = $(this),
c = "change";
if ($(s).hasClass(c) & $(s).text().replace(/%/gi, "") > 0) {
$(s).addClass("positive");
}
if ($(s).hasClass(c) & $(s).text().trim().charAt(0) == "-") $(s).addClass("negative");
});
答案 0 :(得分:2)
&&
代替&
(除非是为了最小化) String.trim
尚未广泛实施。使用
$(s).hasClass(c) && /^\s*-/.test($(s).text())
代替。
我宁愿将代码重写为:
$(".topline strong").digits().each(function() {
var s = $(this);
if (s.hasClass("change")) { // no need to $() an already $()-ed object.
var value = parseFloat(s.text());
if (value != 0)
s.addClass(value > 0 ? "positive" : "negative");
}
});
答案 1 :(得分:2)
您可以使用$.trim()
代替.trim()
,而不是$(".topline strong").digits().each(function () {
var s = $(this), c = "change";
if (s.hasClass(c) && s.text().replace(/%/gi, "") > 0) { s.addClass("positive"); }
if (s.hasClass(c) && $.trim(s.text()).charAt(0) == "-") s.addClass("negative");
});
:
s
还要注意.trim()
更改,没有必要每次都将它克隆为另一个jQuery对象,它已经是一个所以使用它:)至于错误:.indexOf()
并非全部浏览器,这就是jQuery包含$.trim()
函数的原因(原因与$.inArray()
相同,IE没有var
)。
同样,在声明变量时使用{{1}},否则您将创建全局变量。
作为未来读者的一部分,jQuery 1.4.3 + will use native String.prototype.trim如果在调用$.trim()
时可用。{/ p>