केवल jquery का उपयोग कर एक div के अंदर पाठ बदलें


104

मेरे पास एक div है जैसे:

<div id="one">
       <div class="first"></div>
       "Hi I am text"
       <div class="second"></div>
       <div class="third"></div>
</div>

मैं केवल पाठ को "हाय आई एम टेक्स्ट" से "हाय आई एम रिप्लेस" को jquery का उपयोग करके बदलने की कोशिश कर रहा हूं। यह आसान हो सकता है लेकिन मैं ऐसा करने में सक्षम नहीं हूं।

$('#one').text('')सिर्फ पूरे #Onediv को खाली करने का उपयोग करना ।


यह एक बनाने के लिए उपयोगी हो सकता है बेला
Inkbug

$ (First # एक ’) का उपयोग करें। खोजें ('प्रथम’)। पाठ (am हाय मैं प्रतिस्थापित हूं ’); $ के बजाय ('# एक')। पाठ (); या आप सीधे तत्व तक पहुँच सकते हैं और $ ('प्रथम') का उपयोग करके पाठ को बदल सकते हैं। पाठ ('हाय आई एम रिप्लेस');
कार्तिक चौहान

जवाबों:


134

पाठ अपने आप नहीं होना चाहिए। इसे एक spanतत्व में डालें ।

इसे इसमें बदलें:

<div id="one">
       <div class="first"></div>
       <span>"Hi I am text"</span>
       <div class="second"></div>
       <div class="third"></div>
</div>
$('#one span').text('Hi I am replace');

51
यह ओपी के सवाल का जवाब नहीं देता है, जिन्होंने यह नहीं कहा था कि उनका HTML पर नियंत्रण है।
तार

1
यह काम किया है लेकिन कैसे निष्पादित या नहीं सुनिश्चित कर सकते हैं? यदि रिक्त या टैग बदला गया तो क्या मैं अपवाद चला सकता हूं? असफल बाइंडिंग में क्योंकि यह div code.from REST या डेटाबेस द्वारा बनाई गई
कृपाण tabatabaee yazdi

122

पाठ नोड्स खोजें ( nodeType==3) और बदलें textContent:

$('#one').contents().filter(function() {
    return this.nodeType == 3
}).each(function(){
    this.textContent = this.textContent.replace('Hi I am text','Hi I am replace');
});

लाइव उदाहरण: http://jsfiddle.net/VgFwS/


6
वास्तव में महान जवाब!
21

6
यह स्वीकृत उत्तर होना चाहिए क्योंकि इससे आपको HTML बदलने की आवश्यकता नहीं है!
राउटर

2
@ जैमीक एफडब्ल्यूआईडब्ल्यू मुझे इस जवाब से प्यार है क्योंकि यह मार्कअप / स्क्रिप्ट आदि के बारे में चिंता किए बिना प्रतिस्थापन की अनुमति देता है
12

3
इसने मेरे लिए पूरी तरह से काम किया। कभी-कभी हम उन परिस्थितियों में काम करते हैं जो HTML (यानी SharePoint) को बदलने की अनुमति नहीं देते हैं। धन्यवाद
मार्क पी।

14

आपको पाठ को एक रिक्त स्ट्रिंग के अलावा किसी अन्य चीज़ पर सेट करने की आवश्यकता है। इसके अलावा,। Html () फ़ंक्शन को div के HTML संरचना को संरक्षित करते हुए करना चाहिए।

$('#one').html($('#one').html().replace('text','replace'));

जबकि यह इस मामले में काम करेगा, मुझे यह विकल्प पसंद नहीं है क्योंकि यदि आप "पहले" शब्द की जगह "दूसरा" या "मैं" शब्द से ले रहे हैं तो यह आपके टैग को गड़बड़ कर देगा
JSON

10

यदि आप वास्तव में उस पाठ को जानते हैं जो आप बदलने जा रहे हैं तो आप उपयोग कर सकते हैं

$('#one').contents(':contains("Hi I am text")')[0].nodeValue = '"Hi I am replace"';

http://jsfiddle.net/5rWwh/

या

$('#one').contents(':not(*)')[1].nodeValue = '"Hi I am replace"';

$('#one').contents(':not(*)') इस मामले में गैर-तत्व बाल नोड्स का चयन करता है पाठ नोड्स और दूसरा नोड वह है जिसे हम बदलना चाहते हैं।

http://jsfiddle.net/5rWwh/1/


2
से jQuery 1.8.3 $('#one').contents(':not(*)')कुछ नहीं का चयन करेंगे।
ब्रूसहिल

0

एक अन्य दृष्टिकोण यह है कि तत्व को रखें, पाठ को बदलें, फिर उस तत्व को वापस जोड़ें

const star_icon = $(li).find('.stars svg')
$(li).find('.stars').text(repo.stargazers_count).append(star_icon)

0

यदि आप HTML नहीं बदल सकते हैं तो बस। बहुत आदिम लेकिन लघु और काम करता है। (यह पेरेंट डिव को खाली कर देगा इसलिए चाइल्ड डिव को हटा दिया जाएगा)

$('#one').text('Hi I am replace');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="one">
  <div class="first"></div>
  "Hi I am text"
  <div class="second"></div>
  <div class="third"></div>
</div>


1
इससे #one
स्कॉट नेरी

1
@ScotNery धन्यवाद, मैंने जवाब अपडेट कर दिया है। (हालांकि यह तकनीकी रूप से इस विशेष प्रश्न का उत्तर देता है) मैं पाठ को एक टैग के साथ लपेटने के अलावा मान रहा हूं जिसमें एक आईडी है, यह काफी चुनौतीपूर्ण होगा। केवल दूसरी चीज को बदलने के लिए एक स्ट्रिंग का मिलान करना है, लेकिन यह वास्तव में नाजुक है।
2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.