我有两个以类leased
和limit
命名的div。在每个div中都有一个值,如果#next
div中的值高于.leased
div中的值,我使用jQuery隐藏另一个div .limit
。
这一切都适用于以下代码,但我计划div中的值为货币,即£10,000.00
。因此,jQuery不会返回任何内容。
我需要对以下代码做什么才能解析货币值?
<div class="limit">£10,000.00</div>
<div class="leased">£11,000.00</div>
<div id="next">next</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
$("#next").toggle(parseInt($(".leased").text(), 10) < parseInt($(".limit").text(), 10));
</script>
谢谢。
答案 0 :(得分:3)
您可以使用正则表达式从text()
中删除非数字字符,然后在进行比较之前通过parseFloat()
运行它们,如下所示:
var limit = parseFloat($('.limit').text().replace(/[^0-9\.]+/g,""));
var leased = parseFloat($('.leased').text().replace(/[^0-9\.]+/g,""));
$("#next").toggle(leased < limit);
或者,您可以使用data-*
属性将纯值添加到HTML中,并直接对这些值执行逻辑,如下所示:
<div class="limit" data-val="10000.00">£10,000.00</div>
<div class="leased" data-val="11000.00">£11,000.00</div>
<div id="next">next</div>
$("#next").toggle($('.leased').data('val') < $('.limit').data('val'));
答案 1 :(得分:0)
一种选择是使用现成的库,可以将货币字符串转换为数字,例如Numeraljs
否则,正如其他答案和注释中所建议的那样,要么删除所有非数字字符,要么创建一个可能(根据您的需要)也支持逗号作为小数分隔符的正则表达式,因为在某些国家/地区使用了这种语法。 / p>