2011-10-01 13 views
30

संभव डुप्लिकेट के साथ एक पाठ नोड बनाने के लिए:
Escaping text with jQuery append?कैसे संलग्न करने के लिए/बढ़ाएँ/jQuery

मेरे एचटीएमएल इस तरह कुछ हद तक है:

<div id="selector">Hello World</div> 

अब मैं डी इस div को कुछ पाठ जोड़ना पसंद है। मुझे पता है कि मैं बस

$('#selector').append(text); 

इस्तेमाल कर सकते हैं लेकिन यह text में किसी भी विशेष वर्ण से बचें नहीं होता। एक और तरीका है अंतराल में पाठ रैप करने के लिए है:

$('#selector').append($('<span>').text(text)); 

लेकिन यह बदसूरत है, क्योंकि यह अनावश्यक मार्कअप पैदा करता है।

$('#selector').append(document.createTextNode(text)); 

मैं सोच रहा था वहाँ है कि किसी भी jQuery शैली तरीका यह है: तो मेरे वर्तमान समाधान स्वयं एक TextNode बनाने के लिए है?

+0

मैंने अपना जवाब अपडेट कर दिया है। – Tebo

उत्तर

33

createTextNode दृष्टिकोण शायद जाने का सबसे अच्छा तरीका है। यदि आप एक jQuery-ish वाक्यविन्यास चाहते हैं, तो आप एक प्लगइन बना सकते हैं।

$.fn.appendText = function(text) { 
    return this.each(function() { 
     var textNode = document.createTextNode(text); 
     $(this).append(textNode); 
    }); 
}; 
+1

+1 अन्य सभी उपलब्ध विधियों * कंटेनर तत्व की वर्तमान सामग्री * ओवरराइट करें, जो इवेंट श्रोताओं और डीओएम गुणों को गायब/रीसेट करने का कारण बन सकता है। –

+0

@lonesomeday hehe प्लगइन का उपयोग करने के लिए एक आसान आसान है – Deeptechtons

-1

आप इसका उपयोग कर सकते हैं;

$.extend({ 
     urlEncode: function(value) { 
      var encodedValue = encodeURIComponent(value); 
      encodedValue = encodedValue.replace("+", "%2B"); 
      encodedValue = encodedValue.replace("/", "%2F"); 

      return encodedValue; 
     }, 
     urlDecode: function(value) { 
      var decodedValue = decodeURIComponent(value); 
      decodedValue = decodedValue.replace("%2B", "+"); 
      decodedValue = decodedValue.replace("%2F", "/"); 

      return decodedValue; 
     } 
}); 

डीओएम में शामिल होने से पहले HTML वर्णों से बचने के लिए।

इसका उपयोग करें; $.urlEncode(value)

इसका उपयोग करना; $('#selector').append($.urlEncode(text));

अद्यतन # 1

आप इस $('#selector').html($('#selector').html() + text);

मैं संदिग्ध सकता है कि आप यही चाहते थे।

+0

यह काम करता है, लेकिन मैं वास्तव में जो खोज रहा था वह नहीं है: यदि मेरा टेक्स्ट 'मजबूत है, तो इसे बिल्कुल प्रदर्शित करना चाहिए। आपका कोड उत्पन्न करता है: '% 3 सीबी% 3EHi% 3C% 2Fb% 3E' – Niko

+0

मैंने अभी एक अपडेट पोस्ट किया है। – Tebo

+0

अद्यतन के लिए धन्यवाद, लेकिन वास्तव में यह भी काम नहीं करता है। अब यह ** मजबूत ** प्रदर्शित करेगा लेकिन मैं 'स्ट्रॉन्ग 'प्रदर्शित करना चाहता हूं। – Niko

2

$.text() पैरामीटर के रूप में भी एक फ़ंक्शन स्वीकार करता है। इस समारोह को एक सूचकांक और वर्तमान पाठ प्राप्त होगा। फ़ंक्शन का वापसी मान नया टेक्स्ट के रूप में सेट किया जाएगा।

http://jsfiddle.net/4SvgV/1/

+0

धन्यवाद, यह एक अच्छा विचार है। लेकिन दुर्भाग्यवश कंटेनर के अंदर किसी भी तत्व को ओवरराइड किया गया है, अद्यतन पहेली देखें: http://jsfiddle.net/4SvgV/2/ – Niko

संबंधित मुद्दे