1

我的 HTML 中有:

Get <span class="geo_currency">$</span>50 on your next order...

我已经根据地理位置覆盖了货币(工作正常)但是对于一些货币我需要重新定位货币所以它出现在数字之后,如

50<span class="geo_currency">kr</span>

请注意:

- 如上所示的 HTML 是严格的;例如总是

<span class="geo_currency">$</span>someNumber

- 数字中的位数可能会有所不同

- 数字后面总是有一个空格(我想这就是我们需要寻找的?)

非常感谢 - 有什么想法吗?

4

3 回答 3

3

我知道这并不能完全回答您的问题,但也许您可以通过稍微更改 HTML 来使用伪元素解决这个特定问题:

Get <span class="geo_currency" data-currency="euro">50</span> on your next order.

像这样的LESS:

span.geo_currency {
    &[data-currency="euro"]:after {
        content: "€";
    }
    &[data-currency="dollar"]:before {
        content: "$";
    }
}

或者,对于纯粹主义者来说,这个 CSS:

span.geo_currency[data-currency="euro"]:after {
    content: "€";
}
span.geo_currency[data-currency="dollar"]:before {
    content: "$";
}
于 2013-07-24T11:01:42.877 回答
1

你可以用一个正则表达式来做到这一点:例如

将 KR50 兑换成 50KR

//assign the parent to make things a little readable
parent = $('span.geo_currency').parent();
//swap the span
parent.html(parent.html().replace(/(<span class="geo_currency">.*<\/span>)([\d\.\,]{1,20})/, '$2$1'));

将 50KR 兑换成 KR50

//assign the parent to make things a little readable
parent = $('span.geo_currency').parent();
//swap the span
parent.html(parent.html().replace(/([\d\.\,]{1,20})(<span class="geo_currency">.*<\/span>)/, '$2$1'));

限制

  • 我假设您的 HTML 有一个合适的父级,否则扫描 DOM 会很麻烦。
  • 你的数字是一个浮点数,< 20 个字符,只有一个点或逗号作为分隔符。
  • 这不会是一个句子,句号是一个句子,例如,有了这个,您将获得 KR50。

这是一个工作示例:http: //jsfiddle.net/fEksT/

于 2013-07-24T11:57:21.370 回答
0

If you do want to go via JS to support browsers that don't like :before and :after, I've managed to work out a way to do it:

$(".geo_currency").each(function() {
    var indx = $(this).index();
    var textNode = $(this).parent().contents()[indx+2];
    var txt = textNode.textContent;
    var num = txt.match(/^[0-9]+/)[0];
    var newSpan = $("<span>").html(num).append($(this)).append(txt.substr(num.length));
    $(textNode).before(newSpan).remove();
    $(newSpan).get(0).outerHTML = $(newSpan).html();
});

JSFiddle

于 2013-07-24T11:25:58.540 回答