2010-07-16 10 views
8

निम्न HTML पर विचार करें का केवल पाठ का चयन करें:एक तत्व (नहीं अपने बच्चों/वंश के पाठ)

<td> 
    Some Text 
    <table>.....</table> 
</td> 

मैं td तत्व की "कुछ पाठ" पाठ में हेरफेर करने की जरूरत है। मुझे इस td के अंदर तालिका तत्व को स्पर्श नहीं करना चाहिए।

तो, उदाहरण के लिए, शायद मैं सभी "ई" को "@" से बदलना चाहता हूं। मैंने jQuery के .text() और .html() के साथ कुछ दृष्टिकोणों की कोशिश की। मुझे हमेशा बच्चे की मेज के भीतर से कुछ चुनना प्रतीत होता है, जिसे मुझे छूना नहीं चाहिए। इसके अलावा, दुर्भाग्य से, मैं "कुछ पाठ" को एक अवधि या div में लपेट नहीं सकता।

+1

मुझे यकीन नहीं है कि करीम ने अपना जवाब क्यों हटा दिया, इसलिए मैं इसे एक टिप्पणी में रख रहा हूं। '$ ('# MyCell') [0] .firstChild.data = $ ('# x') [0] .firstChild.data.replace ('e', '@');' के साथ क्या गलत है। एकमात्र चीज जो मैं देख सकता हूं वह यह है कि यह सभी टेक्स्ट ऑब्जेक्ट्स को नहीं लगा सकता है। –

उत्तर

7
$(function(){ 
    $('td').contents().each(function(){ 
    if(this.nodeType === 3) 
     $(this).replaceWith(this.wholeText.replace(/e/g, '#')); 
    }); 
}); 

या आप सुझाव

$('td').contents().each(function(){ 
    if(this.nodeType === 3) 
    this.data = this.wholeText.replace(/e/g, '#'); 
}); 

.contents() उद्धार सभी तत्वों, textNodes शामिल पसंद है।

+0

+1, मुझे 'सामग्री' के बारे में पता नहीं था। – karim79

+0

धन्यवाद, जे एंडी। मुझे अपने नए मान पर टेक्स्ट सेट करने में परेशानी हो रही है। .text ('नया मान') बस कुछ भी नहीं करता है। – Dimskiy

+0

ठीक है! this.data = 'नया टेक्स्ट'; चाल – Dimskiy

4

आप के लिए कुछ टीडी में पाठ की प्रत्येक टुकड़ा, तुम सिर्फ एक पाश के साथ उन पर पुनरावृति सकता है क्या करना चाहते हैं:

var nodes=tdEl.childNodes; 
for(var i=0; i<nodes.length; ++i){ 
    if(nodes[i].nodeType===3){ // 3 means "text" 
    nodes[i].data = nodes[i].wholeText.replace(/e/g, '@'); 
    } 
} 

मैं समझता हूँ कि आप सही ढंग से क्या देख रहे थे?

यदि आप इसे पहले से ही अन्य सामान के लिए लोड कर रहे हैं तो आप jQuery का उपयोग कर सकते हैं, लेकिन मैं उपरोक्त कोड के छोटे बिट के लिए 24kb लाइब्रेरी में लोड नहीं करूंगा।

+0

धन्यवाद, लुसीडर। मेरे पास पहले से ही उस प्रोजेक्ट में jQuery है, इसलिए एक jQuery समाधान भी ठीक है। मैं .wholeText का उपयोग कर पाठ सेट नहीं कर सकता। मुझे त्रुटि मिलती है: ऐसी संपत्ति सेट करना जिसमें केवल गेटर – Dimskiy

+0

ठीक है! नोड्स [i] .data = 'नया टेक्स्ट'; चाल – Dimskiy

+0

अद्यतन है: नोड्स [i] .डेटा HTML टैग को टेक्स्ट के रूप में प्रस्तुत करेगा। – Dimskiy

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