我想替换p标签中的所有正斜杠,但我看不出我做错了什么。
$(document).ready(function() {
var content = $("p").text();
content.replace(/\//g, 'ForwardSlash');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>YOYOYO / yoyoyoy / YIYYIYIYI ddwqd w/ dwdwdw/ dwd / dwd /</p>
<div>YOYOYO / yoyoyoy / YIYYIYIYI ddwqd w/ dwdwdw/ dwd / dwd /</div>
我想要这样做的原因是因为我正在制作的网站要求所有正斜杠与标签中的文本颜色不同,因为我在CMS中构建网站我试图制作它易于编辑。这样做的粗略方法是使客户端粘贴跨越类名或内联样式。希望我可以使用您的帮助和上面的代码自动为他做其中一件事。
答案 0 :(得分:2)
你走在正确的轨道上。但是,要知道replace()
没有带引号的字符串并修改它。相反,它返回一个结果,你将不得不使用该结果
$(document).ready(function() {
$('p').each(function() {
var content = $(this).text();
content = content.replace(/\//g, 'ForwardSlash');
$(this).text(content);
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>YOYOYO / yoyoyoy / YIYYIYIYI ddwqd w/ dwdwdw/ dwd / dwd /</p>
<p>YOYOYO / yoyoyoy / YIYYIYIYI ddwqd w/ dwdwdw/ dwd / dwd /</p>
&#13;
答案 1 :(得分:1)
您忘记将结果应用回p
(以及content
变量,因为content
本身未被修改,返回 修改后的字符串,因此如果您想在多个步骤中执行此操作,则必须将结果重新分配给content
。
另外,正如@ dman2306所提到的,使用html()
代替text()
可能更好,因为在使用文本时会删除任何其他节点,包括<em>
和<strong>
标记,通常在<p>
标记内使用。虽然这需要正则表达式模式不删除前面有<
...
$(document).ready(function() {
var content = $("p").text().replace(/\//g, 'ForwardSlash');
$("p").text(content);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>YOYOYO / yoyoyoy / YIYYIYIYI ddwqd w/ dwdwdw/ dwd / dwd /</p>
<div>YOYOYO / yoyoyoy / YIYYIYIYI ddwqd w/ dwdwdw/ dwd / dwd /</div>
&#13;