我有一些带数字的div,还有一些有数字和文字的div。如果div有数字和文本,我想将文本包装在一个span中,这样我就可以改变它的字体大小。
看起来像这样:
<div>Word 500</div>
<div>350</div>
我想使用JS来实现这样:
<div><span>Word</span> 500</div>
<div>350</div>
我已经尝试循环遍历字符串并检查字母/数字以及拼接在单词周围。但我还没有找到一个好的解决方案。有什么想法吗?
答案 0 :(得分:3)
您可以使用replaceWith()
jq方法:
$('div').contents().replaceWith(function() {
return this.nodeType === 3 && this.nodeValue.replace(/([a-zA-ZÀ-ú]+)/, '<span>$1</span>');
});
div span {
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>Word 500</div>
<div>350</div>
<div>wWÅÄÖåäö 600</div>
<div>50</div>
答案 1 :(得分:1)
请看下面的代码。
它使用.split()
函数将整个文本分解为字符串数组,并检查每个单词的数字。
$(document).ready(function(){
$("div").each(function(){
var entireText = $(this).text();
var allWords = entireText.split(" ");
var updatedText = "";
$(this).empty();
$.each(allWords, function(i,value){
if(isNaN(value))
{
updatedText+= "<span>"+value+"</span> ";
}
else
{
updatedText+= value;
}
});
$(this).html(updatedText);
});
});
&#13;
span{
color: blue;}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div>Word 500</div>
<div>350</div>
&#13;
答案 2 :(得分:1)
$('div').each(function() {
$(this).html($(this).html().replace(/\b[A-Za-z]+\b/g,
function(x) {return '<span class="textClass">' + x + '</span>';
}));
}
);
答案 3 :(得分:0)
var word = '<div>Word 500</div>'.split('500');
var number = '<div>Word 500</div>'.split('500');
var name = split[0];
现在您已经解析了字符串,您可以使用它们,无论您想要什么样的方式。