दिलचस्प पोस्ट
मैं बाल खिड़की के डोम ट्री तक कैसे पहुंच सकता हूं? कैसे PHP में उत्पन्न कई arrays में आइटम के सभी संयोजन स्कला में अंडरस्कोर के सभी उपयोग क्या हैं? इस संकेतक के माध्यम से मुझे टेम्प्लेट बेस वर्ग के सदस्यों का उपयोग क्यों करना है? सीएसएस अस्पष्टता केवल पृष्ठभूमि रंग के लिए नहीं उस पर पाठ? डाटाबेस की तुलना करना और स्क्वीबबेस का उपयोग करके एसक्यूएल स्क्रिप्ट जेनरेट करना जावा – दो स्ट्रिंग के बीच सभी स्ट्रिंग्स को पकड़ने का सबसे अच्छा तरीका है? (regex?) पायथन 3 में मैं कैसे .decode ('string-escape') करूँ? एक निश्चित संख्या तक प्राथमिकताओं की सूची जनरेट करें रैखिक लयआउट प्रोग्राम में मार्जिन सेट करें समेकित फ़ंक्शन के बिना टीएसक्यूएल पायवोट SELECT * का उपयोग करने में प्रदर्शन समस्या? जावास्क्रिप्ट एक AJAX घटना का पता लगाता है संदर्भ: PHP के प्रिंट और इको की तुलना करें फेसबुक ओअथ लॉगआउट

मैं अपने मूल तत्वों को परिवर्तित किए बिना एक तत्व का पाठ कैसे बदल सकता / सकती हूं?

मैं गतिशील रूप से तत्व के पाठ को अद्यतन करना चाहता हूं:

<div> **text to change** <someChild> text that should not change </someChild> <someChild> text that should not change </someChild> </div> 

मैं jQuery के लिए नया हूँ, इसलिए यह कार्य मेरे लिए काफी चुनौतीपूर्ण लगता है। क्या कोई मुझे फ़ंक्शन / चयनकर्ता के लिए उपयोग करने के लिए इंगित कर सकता है?

यदि यह संभव है, तो मैं इसे बदलने के लिए आवश्यक पाठ के लिए एक नया कंटेनर जोड़ते बिना इसे करना चाहता हूं।

वेब के समाधान से एकत्रित समाधान "मैं अपने मूल तत्वों को परिवर्तित किए बिना एक तत्व का पाठ कैसे बदल सकता / सकती हूं?"

मार्क का उपयोग करके बेहतर समाधान मिला है , लेकिन आप इसे सामान्य जावास्क्रिप्ट में भी कर सकते हैं।

जावास्क्रिप्ट में, बाल नोड्स संपत्ति आपको पाठ नोड्स सहित किसी तत्व के सभी बच्चे नोड देती है।

इसलिए, यदि आप वह पाठ जानते थे जिसे आप बदलना चाहते थे तो हमेशा तत्व में पहली चीज होने वाली थी, फिर दी गयी उदाहरण HTML के रूप में:

 <div id="your_div"> **text to change** <p> text that should not change </p> <p> text that should not change </p> </div> 

आप यह कर सकते हैं:

 var your_div = document.getElementById('your_div'); var text_to_change = your_div.childNodes[0]; text_to_change.nodeValue = 'new text'; 

बेशक, आप अभी भी <div> पहले स्थान पर चुनने के लिए jQuery का उपयोग कर सकते हैं (यानी var your_div = $('your_div').get(0); )।

 $("div").contents().filter(function(){ return this.nodeType == 3; }).filter(':first').text("change text"); 

स्रोत: http://api.jquery.com/contents/

2017 अद्यतन (adrach): ऐसा लगता है कि कई चीजों को बदल दिया है क्योंकि यह पोस्ट किया गया था। यहां एक अद्यतन संस्करण है

 $("div").contents().filter(function(){ return this.nodeType == 3; }).first().replaceWith("change text"); 

कार्रवाई में देखें

मार्कअप:

 $(function() { $('input[type=button]').one('click', function() { var cache = $('#parent').children(); $('#parent').text('Altered Text').append(cache); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="parent">Some text <div>Child1</div> <div>Child2</div> <div>Child3</div> <div>Child4</div> </div> <input type="button" value="alter text" /> 
 <div id="divtochange"> **text to change** <div>text that should not change</div> <div>text that should not change</div> </div> 
 $(document).ready(function() { $("#divtochange").contents().filter(function() { return this.nodeType == 3; }) .replaceWith("changed text"); }); 

यह केवल पहला पाठनोड बदलता है

बस उस पाठ को लपेटो जिसे आप चुनने के लिए कक्षा के साथ एक स्पैन में बदलना चाहते हैं

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

 <div id="header"> <span class="my-text">**text to change**</span> <div> text that should not change </div> <div> text that should not change </div> </div> 

देखा!

 $('#header .mytext').text('New text here') 

विशिष्ट मामले के लिए आपने उल्लेख किया है:

 <div id="foo"> **text to change** <someChild> text that should not change </someChild> <someChild> text that should not change </someChild> </div> 

… यह बहुत आसान है:

 var div = document.getElementById("foo"); div.firstChild.data = "New text"; 

आप यह नहीं बताते हैं कि आप इसे कैसे सामान्य बनाना चाहते हैं अगर, कहते हैं, आप <div> भीतर पहले पाठ नोड के पाठ को बदलना चाहते हैं, तो आप ऐसा कुछ कर सकते हैं:

 var child = div.firstChild; while (child) { if (child.nodeType == 3) { child.data = "New text"; break; } child = child.nextSibling; } 

यहां एक और तरीका है: http://jsfiddle.net/qYUBp/7/

एचटीएमएल

 <div id="header"> **text to change** <div> text that should not change </div> <div> text that should not change </div> </div> 

jQuery

 var tmp=$("#header>div").html(); $("#header").text("its thursday").append(tmp); 
 $.fn.textPreserveChildren = function(text) { return this.each(function() { return $(this).contents().filter(function() { return this.nodeType == 3; }).first().replaceWith(text); }) } setTimeout(function() { $('.target').textPreserveChildren('Modified'); }, 2000); 
 .blue { background: #77f; } .green { background: #7f7; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <div class="target blue">Outer text <div>Nested element</div> </div> <div class="target green">Another outer text <div>Another nested element</div> </div> 

मुझे लगता है कि आप .prependTo () के लिए देख रहे हैं।

http://api.jquery.com/prependTo/

हम पृष्ठ पर कोई तत्व भी चुन सकते हैं और इसे किसी दूसरे में डाल सकते हैं:

$ ( 'H2') prependTo ($ ( 'कंटेनर।'))।

अगर इस तरह से चयनित तत्व को कहीं और डाला जाता है, तो उसे लक्ष्य (क्लोन नहीं) में ले जाया जाएगा:

 <div class="container"> <h2>Greetings</h2> <div class="inner">Hello</div> <div class="inner">Goodbye</div> </div> 

यदि एक से अधिक लक्ष्य तत्व मौजूद हैं, तो पहले के बाद प्रत्येक लक्ष्य के लिए सम्मिलित तत्व की क्लोन की प्रतिलिपियां बनाई जाएंगी।

सरल जवाब:

 $("div").contents().filter(function(){ return this.nodeType == 3; })[0].nodeValue = "The text you want to replace with" 

मार्क के जवाब में समस्या यह है कि आपको खाली पठानों के रूप में भी मिलता है। JQuery प्लगइन के रूप में समाधान:

 $.fn.textnodes = function () { return this.contents().filter(function (i,n) { return n.nodeType == 3 && n.textContent.trim() !== ""; }); }; $("div").textnodes()[0] = "changed text"; 

यह एक पुराना सवाल है, लेकिन आप अपनी जिंदगी को आसान बनाने के लिए एक साधारण कार्य कर सकते हैं:

 $.fn.toText = function(str) { var cache = this.children(); this.text(str).append(cache); } 

उदाहरण:

 <div id="my-div"> **text to change** <p> text that should not change </p> <p> text that should not change </p> </div> 

उपयोग:

 $("#my-div").toText("helloworld"); 

बहुत सारे अच्छे उत्तर यहां दिए गए हैं लेकिन वे केवल बच्चों के साथ एक पाठ नोड को संभालते हैं। मेरे मामले में मुझे सभी पाठ नोडों पर काम करना चाहिए और एचटीएमएल बच्चों को नजरअंदाज करना चाहिए, लेकिन ऑर्डर देने का निवेदन करना चाहिए।

तो अगर हमारे पास ऐसा मामला है:

 <div id="parent"> Some text <div>Child1</div> <div>Child2</div> and some other text <div>Child3</div> <div>Child4</div> and here we are again </div>