2011-12-16 37 views
5

我想使它成爲具有「片段」類的任何元素的子元素都被讀爲文本而不是HTML。我知道要做到這一點,我需要更改<>標誌,以便HTML頁面將它們作爲文本讀取。我一直在努力這樣做,但不幸的是,我只有:如何將HTML轉換爲使用jQuery的文本?

function(){ 
$('.snippet') 
} 
+2

你是否要求一種顯示``的HTML的方法。snippet`元素作爲文本(帶標籤名稱)?我對你的措辭有點困惑。 – Blender 2011-12-16 17:37:26

+0

當你問一個問題請具體,並舉一些例子。 – 2011-12-17 06:19:34

回答

12

您可以使用jQuery的.text()功能,將刪除HTML標籤:

var text_only = $('.snippet').text(); 

這裏是一個演示:http://jsfiddle.net/meZjw/

Docs for .text()http://api.jquery.com/text

UPDATE

森達維達斯具有良好的時候,你可以通過不同的.snippet元素重複一次改變他們的HTML結構之一:使用$.each()演示

$.each($('.snippet'), function (index, obj) { 
    var $this = $(this); 
    $this.html($this.text()); 
}); 

這裏:http://jsfiddle.net/meZjw/1/

UPDATE

Aepheus有一個很好的觀點,我不知道這是什麼問,但你可以做一個功能,將ES斗篷HTML實體,如其他語言:

function htmlEntities(str) { 
    return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;'); 
} 

這裏是演示:http://jsfiddle.net/meZjw/2/

UPDATE

您還可以使用.text().html()以相反的順序作爲我上面的例子,大意以純文本顯示元素的HTML:

$.each($('.snippet'), function (index, obj) { 
    var $this = $(this); 
    $this.text($this.html()); 
}); 

這裏是一個演示:http://jsfiddle.net/meZjw/31/

+0

如果頁面上有多個「snippet」元素(很有可能),單獨使用`.snippet``選擇器是不夠的,因爲`.text()`返回* all的連接文本內容*匹配元素。 – 2011-12-16 17:39:05

0

試試這個

$('.snippet').text($('.snippet').html()); 
0

This是我用:

<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> 

裁掉您需要的部分。