2011-09-11 9 views
7

मैं इस तरह एक उदाहरण के तत्व तत्व के अंदर पाठ की परिभाषा रेखा को कम करना) (ब्ला ब्ला ब्लाह।)। यह एक बच्चे के तत्व के अंदर लपेटा जा सकता है या सिर्फ नग्न textnode हो सकता है। मैं उसको कैसे करू? धन्यवाद।एक तत्व jQuery में पाठ की पहली पंक्ति हो रही

उत्तर

14

उपयोग contents()[docs] विधि पाठ नोड्स सहित सभी बच्चों, प्राप्त करने के लिए किसी भी खाली (या खाली स्थान के केवल) नोड्स को फ़िल्टर, तो सेट के पहले हड़पने: आप जाँच कर सकते हैं वहाँ पहले तत्व से पहले पाठ है या नहीं।

var first_line = $("#element") 
         .contents() 
         .filter(function() { 
          return !!$.trim(this.innerHTML || this.data); 
         }) 
         .first(); 

पाठ नोड:http://jsfiddle.net/Yftnh/

तत्व:http://jsfiddle.net/Yftnh/1/

+0

धन्यवाद, हालांकि मेरे लिए यह टेक्स्ट की बजाए एक ऑब्जेक्ट देता है, क्या मुझे बस पहली बार [0] चाहिए? – Harry

+0

हां, यह आपको तत्व या टेक्स्ट नोड के साथ एक jQuery ऑब्जेक्ट देता है। यदि आप टेक्स्ट सामग्री चाहते हैं, तो 'first_line.text() 'का उपयोग करें। यदि आप अग्रणी और पिछली सफेद जगह को ट्रिम करना चाहते हैं, तो '$ .trim (first_line.text())' करें। – user113716

+1

हाय क्या आप समझा सकते हैं कि आप वापसी क्यों करते हैं !! क्या है !!? – Harry

-1

पहला तत्व

var content = $('#element').html(); 

की सामग्री प्राप्त तो लाइन ब्रेक का उपयोग कर

tmp = content.split("\n"); 

सरणी के पहले भाग तत्व की पहली पंक्ति है एक सरणी में पाठ विभाजित

var firstLine = tmp[0]; 
+1

मैं पहली बार सोचा, क्या LINEBREAK, लेकिन मैं Fx में देखते हैं तो कम से कम नहीं है। हालांकि भरोसा करना खतरनाक है। यहां पहली पंक्ति है: 'चेतावनी ($ ("# तत्व")। पाठ()। विभाजन (/ \ n /) [1])' [0] वें एक खाली स्ट्रिंग है ... http: // jsfiddle .net/mplungjan/QquSp/ – mplungjan

+0

कोई लाइनब्रेक – Harry

2

यहां आपके लिए विचार है। बेशक अगर वहाँ लाइन से पहले h4 तत्व है आप प्राप्त करना चाहते हैं:

var content = $('#element').html(); 
var arr = content.split('<h4>'); 
console.log(arr[0]); 
+0

कोई एच 4 गारंटी नहीं है, यह सिर्फ एक उदाहरण है – Harry

2
var myElement = $("#element"); 
while(myElement.children().length > 0) 
{ 
    myElement = myElement.children().first(); 
} 
var firstText = myElement.text(); 

यह मानते हुए कि पाठ सही ढंग से निश्चित रूप से, एक तत्व के अंदर लपेटा जाता है। ,

/\s*</.test(myElement.html()) 
+0

मेरे पहले विश्वास के लिए काम नहीं करता है, जो ब्ला ब्ला ब्लाह के बजाय हेडर से मेल खाता है (शायद इसे चुना जाना चाहिए बेहतर उदाहरण पाठ lol) – Harry

+0

यदि आपको

mytext
मिलता है तो यह बहुत मुश्किल हो जाता है। मुझे लगता है कि मुझे लगता है कि डोम के माध्यम से कुछ बार फिर से यात्रा की जरूरत है। यह बुलेटप्रूफ कैसे होना चाहिए? –

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