2011-10-25 4 views
22

क्या स्ट्रिंग में सभी HTML को निकालने के लिए jquery text() फ़ंक्शन का उपयोग करना संभव है? HTML टैग्स केस्ट्रिंग में सभी HTMLtags को हटाएं (jquery text() फ़ंक्शन के साथ)

स्ट्रिंग:
myContent = '<div id="test">Hello <span>world!</span></div>';


परिणाम होना चाहिए:
Hello world!

+1

[पाठ जावास्क्रिप्ट से पट्टी एचटीएमएल] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/822452/strip-html-from-text-javascript) – Clive

उत्तर

67
var myContent = '<div id="test">Hello <span>world!</span></div>'; 

alert($(myContent).text()); 

कि हैलो दुनिया का परिणाम है। क्या इससे आपके प्रश्न का उत्तर मिलता है?

एक उदाहरण

+0

या किसी भी स्ट्रिंग के लिए इस दूसरे शब्दों में कहें को, एक्स, $ ('' + x + '') का मान .text() == x हमेशा सत्य का मूल्यांकन करता है। – Jazz

+0

असल में यह सच नहीं है, अगर स्ट्रिंग में HTML है। – HarryFink

+0

फिर भी यह काम कर रहा है। सरल समाधान –

7

के लिए http://jsfiddle.net/D2tEf/ आप सका सिर्फ try it नहीं?

myContent = '<div id="test">Hello <span>world!</span></div>'; 
console.log($(myContent).text()); //Prints "Hello world!" 

ध्यान दें कि आप एक jQuery वस्तु में स्ट्रिंग रैप करने के लिए की जरूरत है, अन्यथा यह एक text विधि स्पष्ट रूप से नहीं होगा।

20

मैंने यह परीक्षण केस बनाया: http://jsfiddle.net/ccQnK/1/, मैंने आपके इच्छित परिणामों को प्राप्त करने के लिए नियमित अभिव्यक्तियों के साथ जावास्क्रिप्ट प्रतिस्थापन फ़ंक्शन का उपयोग किया।

$(document).ready(function() { 
    var myContent = '<div id="test">Hello <span>world!</span></div>'; 
    alert(myContent.replace(/(<([^>]+)>)/ig,"")); 
}); 
+2

आपको हमेशा वास्तविक समाधान पोस्ट करना चाहिए, न केवल jsfiddle या कुछ समान साइट पर। इस बात की कोई गारंटी नहीं है कि दूसरी साइट भविष्य में आसपास होगी। – Blazemonger

+0

jsfiddle myContent.replace से (/ (<([^>] +)>)/ig, "") – sherif

+0

रेगेक्स समाधान का एक बड़ा प्रशंसक नहीं है। वे लगभग हमेशा टूटा जा सकता है। –

9

आप HTML हटाने की जरूरत है, लेकिन पता नहीं है अगर यह वास्तव में किसी भी HTML टैग है, तो आप jQuery विधि सीधे क्योंकि यह गैर HTML पाठ के लिए खाली रैपर रिटर्न उपयोग नहीं कर सकते।

$('<div>Hello world</div>').text(); //returns "Hello world" 
$('Hello world').text(); //returns empty string "" 

आप मान्य HTML में पाठ लपेट या तो:

$('<div>' + 'Hello world' + '</div>').text(); 

या उपयोग विधि $ .parseHTML() है कि दोनों HTML और गैर- HTML पाठ संभाल कर सकते हैं (jQuery 1.8 के बाद से):

var html = $.parseHTML('Hello world'); //parseHTML return HTMLCollection 
var text = $(html).text(); //use $() to get .text() method 

प्लस parseHTML स्क्रिप्ट टैग को पूरी तरह से हटा देता है जो उपयोगकर्ता इनपुट के लिए एंटी-हैकिंग सुरक्षा के रूप में उपयोगी है।

$('<p>Hello world</p><script>console.log(document.cookie)</script>').text(); 
//returns "Hello worldconsole.log(document.cookie)" 

$($.parseHTML('<p>Hello world</p><script>console.log(document.cookie)</script>')).text(); 
//returns "Hello world" 
3

एक वैकल्पिक:

$("<p>").html(myContent).text(); 
0

मैं अपने विशेष मामले कि मैं सिर्फ सामग्री ट्रिम करने के लिए की जरूरत में पाया। शायद सवाल में जवाब नहीं पूछा। लेकिन मैंने सोचा कि मुझे वैसे भी यह जवाब जोड़ना चाहिए।

$(myContent).text().trim() 
संबंधित मुद्दे