我的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
- 数字中的位数可以变化
- 数字之后总是有一个空格(我想这就是我们需要寻找的东西?)
很多 - 任何想法?
答案 0 :(得分:3)
我知道这并不能完全回答你的问题,但也许你可以通过改变你的HTML来解决这个特殊问题:
Get <span class="geo_currency" data-currency="euro">50</span> on your next order.
小喜欢这样:
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: "$";
}
答案 1 :(得分: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'));
<强>限制强>
这是一个工作示例:http://jsfiddle.net/fEksT/
答案 2 :(得分:0)
如果您确实希望通过JS来支持不喜欢:before
和:after
的浏览器,我已经设法找到了一种方法:
$(".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();
});