2012-06-21 11 views
8

एक jQuery तत्व से टेक्स्ट प्राप्त करने का एक अच्छा तरीका क्या है जब टेक्स्ट स्वयं टेक्स्ट वाले किसी अन्य तत्व के समीप है?पाठ के समीप टैग के अंदर कुछ पाठ को अनदेखा करते समय मैं तत्व के अंदर टेक्स्ट कैसे एक्सेस करूं?

इस उदाहरण में, मैं पाठ पर प्राप्त करना चाहते हैं: 'पाठ मैं चाहता हूँ', जबकि आसन्न चाइल्ड तत्व में पाठ अनदेखी:

<span> 
    <a>Text I want to ignore</a> 
    Text I want 
</span> 

मेरे समाधान <span> टैग में सभी पाठ मिल गया था और उसके बाद <a> टैग में सभी टेक्स्ट हटाएं। यह थोड़ा अजीब लगता है, इसलिए यदि वहाँ एक बेहतर तरीका है मैं सोच रहा हूँ:

var all_the_text = $('span').text(); 
var the_text_i_dont_want = $('span').find('a').text(); 
var text_i_want = all_the_text.replace(the_text_i_dont_want, ''); 
+0

की संभावित डुप्लिकेट [jQuery: .text का उपयोग कर() चाइल्ड टैग में नेस्ट न केवल पाठ को पुनः प्राप्त करने] (http://stackoverflow.com/questions/3442394/jquery-using-text-to-retrieve -ऑन-टेक्स्ट-न-नेस्टेड-इन-चाइल्ड-टैग) –

उत्तर

7

आप इस के लिए पाठ नोड्स में जाना है:

var text_i_want = $("span").contents().filter(function(){ 
    return this.nodeType === 3; 
}).text();​ 

http://jsfiddle.net/UeBZq/

+2

मैं हमेशा उस पाठ नोड्स 'nodeType === 3' को भूल जाता हूं, अच्छी तरह से किया जाता है। मई में कहा जा सकता है कि यदि ओपी लाइन ब्रेक को ट्रिम करने और पाठ के पहले/उसके बाद अतिरिक्त अंतर को ट्रिम करना चाहता है, तो आप ['$ .trim'] (http://api.jquery.com/jQuery.trim/) का उपयोग कर सकते हैं - [ बेला] (http://jsfiddle.net/ult_combo/UeBZq/2/)। –

+1

यह बहुत बढ़िया है! बस एफवाईआई: यदि आप गारंटी दे सकते हैं कि टेक्स्टनोड हमेशा पहले तत्व (किसी भी बच्चे के एल्म्स से पहले) होगा .. आप इसे फ़िल्टर करने की आवश्यकता के बिना सीधे संदर्भित कर सकते हैं: 'var text_i_want = $ (" span ") .contents() [0] '' .. या यदि आप jQuery विधियों को चेन रखना चाहते हैं तो आप '' .irst() '' का उपयोग कर सकते हैं। –

2

एक टैग हटाएं और अवधि सामग्री प्राप्त करें। Working Demo

<span> 
    <a>Text I want to ignore</a> 
    Text I want 
</span>​ 

var all_the_text = $('span').find('a').remove(); 
alert($('span').text()); 
+0

क्यों 'JSON.stringify'? आप '$ ('span') का उपयोग कर सकते हैं। टेक्स्ट()'। –

+0

मैं इसे काम करने के तुरंत बाद इसे दोबारा करने की देखभाल करता हूं :) इसे अभी साफ़ करें! –

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