使用jQuery将不同的样式应用于同一元素的各个部分
Apply different styles to parts of the same element using jQuery
考虑这个元素:
德古拉伯爵:布莱布莱布莱
我需要以这样一种方式分割文本,即冒号之前(包括冒号)的部分有一种样式(比如粗体和红色),其余部分有另一种风格(比如黑色和斜体)。
我正在尝试使用JQuery来实现这一点,下面是我的尝试:
$("vi").each(function(){
var temp = $(this).text();
temp = temp.split(':');
temp[0] = "<strong>" + temp[0].trim() + "</strong>";
temp[1] = "<em>" + temp[1].trim() + "</em>";
temp = temp.join("");
$(this).text(temp);
});
vi {
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<html>
<body>
<vi>Dracula: bleh bleh bleh</vi>
</body>
</html>
知道为什么这不起作用吗?当我尝试运行它时,它只是按原样输出文本和我添加的标签,即它显示"而不是应用它,依此类推
您需要.html()
,而不是.text()
,因为您要将HTML插入元素:
$("vi").each(function(){
var temp = $(this).text();
temp = temp.split(':');
temp[0] = "<strong>" + temp[0].trim() + "</strong>";
temp[1] = "<em>" + temp[1].trim() + "</em>";
temp = temp.join("");
$(this).html(temp);
});
此外,如果我理解你想要的描述,你的CSS样式应该是:
vi strong {
color: red;
}
注意:vi
不是一个有效的HTML元素,但您可能已经知道了。
$("vi").each(function(){
var temp = $(this).text();
temp = temp.split(':');
temp[0] = "<strong>" + temp[0].trim() + "</strong>";
temp[1] = "<em>" + temp[1].trim() + "</em>";
temp = temp.join(": ");
$(this).html(temp);
});
vi strong {
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<vi>Dracula: bleh bleh bleh</vi>
将html()
设置为元素。阅读http://api.jquery.com/html
$("vi").each(function(){
var temp = $(this).text();
temp = temp.split(':');
temp[0] = "<strong>" + temp[0].trim() + "</strong>";
temp[1] = "<em>" + temp[1].trim() + "</em>";
temp = temp.join(": ");
$(this).html(temp);
});
vi {
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<html>
<body>
<vi>Dracula: bleh bleh bleh</vi>
</body>
</html>
您需要使用$.fn.html方法。将其与函数参数一起使用很方便,它将在内部为您运行each
循环:
$("vi").html(function(_, text) {
text = text.split(':');
return "<strong>" + text[0].trim() + "</strong> <em>" + text[1].trim() + "</em>";
});
vi {color: red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<vi>Dracula: bleh bleh bleh</vi>
相关文章:
- 使用数据上的角度更改设置集合的第一个元素的动画
- 在数组中的一个元素上设置多个值
- Rails/Javascript链接到用于切换多个元素的函数
- 两个指令创建新的继承的和隔离的作用域-元素得到哪个
- 如何使用jquery animate来回移动多个元素
- 如何在jQuery中包装两个元素的组
- JavaScript:当有两个B类元素时,如何在id X中的B类中选择A类
- 在页面上创建多个元素,而不是一个发生更改的元素
- Javascript获取具有不同id的文件数's来自没有多个属性的文件输入元素
- 一个页面上有多个Ace编辑器,没有预先设置元素
- 使用filter和map方法将数组中某些元素的第一个字母大写-JavaScript
- 无法使以下ng on click outside指令在同一页面上的两个元素上工作
- 在多个元素上使用jquery插件,只需稍作修改
- CSS3:当页面向下滚动到第一个视口时,是否可以在元素上触发转换
- jQuery body onChange具有多个元素和多个函数
- Small Javascript从动态表单中删除多个元素的问题
- 是否可以在第n个元素处重复启动ng
- 角度指令:指向第二个元素
- 使用jQuery获取第N个元素的数据属性值
- 使用 JavaScript 一次为一个元素设置多个属性