如何过滤文本以便将其中一部分转换为货币?

时间:2015-04-10 10:29:41

标签: javascript jquery

我有一些我需要转换为货币的数字。我正在使用此脚本进行转换(https://github.com/CodersPress/jQuery-Currency),该转换适用于我的一个号码但不适用于另一个号码。我无法弄清楚如何定位li中的数字(在这种情况下我无法修改html输出)。我试图过滤文本以从li中的数字重新定位':',但仍然无法使货币转换对li中的数字起作用。

我有一个小提琴:https://jsfiddle.net/dcrr5qxf/5/

这是我的HTML:

<ul class="cfeature">                              
    <li class="purchase_price"><label>Purchase Price</label>: 333333</li>
</ul>
<p class="purchase_price">
    <label>Purchase Price:&nbsp;</label>
    <strong><span>333333.00</span></strong>
</p>

这是我的js:

$('.purchase_price').each(function() {
    $(this).html($(this).html().replace(":", ""));
});
$('.purchase_price').each(function() {
    $(this).html($(this).html().replace("Purchase Price", "Purchase Price:"));
});

$(".purchase_price span").currency(); // this one works as the number is in a <span>
$(".purchase_price").currency(); // this one doesn't work
});

});

1 个答案:

答案 0 :(得分:0)

您可以在<li>上循环解决此问题,并对每个问题执行以下3个步骤:

  1. 将数字换成<div>,然后给它上课,比如forCurrency
  2. .currency()应用于此<div>并获取相应的文字
  3. 用我们刚收到的文字替换已包装的<div>

  4. jQuery的:

        $("ul.cfeature > li").each(function(){
    
            // wrap the number in a div
            $(this).html(function(_, html) {
                return html.replace(/(\d+)\s*$/, "<div id='forCurrency'>$1</div>");
            });
    
            // apply .currency() and get the corresponding text
            var currencyText = $("div#forCurrency").currency().text();
            console.log(currencyText);
    
            // replace the wrapped div with the text that we just got
            $("div#forCurrency").replaceWith(currencyText);
    
        });
    

    Updated jsFiddle