我希望让任何带有“snippet”类的元素的子元素被读取为文本而不是HTML。我知道要做到这一点,我需要更改<
和>
符号,以便HTML页面将它们视为文本。我一直在尝试做这个,但不幸的是,我只有:
function(){
$('.snippet')
}
我希望让任何带有“snippet”类的元素的子元素被读取为文本而不是HTML。我知道要做到这一点,我需要更改<
和>
符号,以便HTML页面将它们视为文本。我一直在尝试做这个,但不幸的是,我只有:
function(){
$('.snippet')
}
.text()
函数来去除HTML标签:var text_only = $('.snippet').text();
这里有一个演示:http://jsfiddle.net/meZjw/
.text()
的文档:http://api.jquery.com/text
更新
Sime Vidas提出了一个很好的观点,您可以遍历不同的.snippet
元素,逐个更改它们的HTML结构:
$.each($('.snippet'), function (index, obj) {
var $this = $(this);
$this.html($this.text());
});
这里是使用$.each()
的演示:http://jsfiddle.net/meZjw/1/
更新
Aepheus提出了一个好点子,我不知道这是否是被问到的内容,但你可以创建一个函数来转义HTML实体,就像其他语言一样:
function htmlEntities(str) {
return String(str).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
}
这是演示:http://jsfiddle.net/meZjw/2/
更新
您还可以使用.text()
和.html()
与我的上面的示例相反的顺序,以展示元素的HTML作为纯文本:
$.each($('.snippet'), function (index, obj) {
var $this = $(this);
$this.text($this.html());
});
这里有一个演示: http://jsfiddle.net/meZjw/31/
'.snippet'
选择器是不够的,因为.text()
返回所有匹配元素的连接文本内容。 - Šime Vidas$('.snippet').each(function() {
$(this).text($(this).html());
});
$('.snippet').html().replace(/</g, "<").replace(/>/g, ">");
试一下这个
$('.snippet').text($('.snippet').html());
这是我使用的:
<span class="snippet">Who me? Why thank you.</span>
<div id="show_text"></div>
<script type="text/javascript" charset="utf-8">
(function($) {
var data = $('.snippet').text(); // or how ever you collect the data Object
$('div#show_text').append( decodeURIComponent(jQuery.param(data)) );
// debug report:
if($.browser.mozilla){ //If you talk the talk, then you should toSource()
console.log(data.toSource());
}else{
console.log(data);
}
})(jQuery);
</script>
剪切你需要的部分。
.snippet
元素的HTML显示为文本(包括标签名称)吗?我对你的措辞有点困惑。 - Blender