51

I have this html code

<div id="mydiv">
    <div>
        <span>Text inside span</span>
        Text next to span
    </div>
    <div>
        Contents inside the 2nd div element...
    </div>
</div>

I wanted to get the "Text next to span". I tried this code JQuery code

var a = $('#mydiv div').first().find('span').parent().text();
alert(a);

The output of the jquery code above is this:

Text inside span
Text next to span

What should be the right thing to do to just get only the "Text next to span"?

Rash Amed
  • 677
  • 1
  • 5
  • 7

3 Answers3

60
var a = $('#mydiv div').first().contents().filter(function() {
    return this.nodeType == 3;
}).text();

This gets the contents of the selected div, and filters the matched set, returning only elements with nodeType == 3, which are text nodes.

James Allardice
  • 160,885
  • 21
  • 326
  • 309
12

I got it by this:

$('#mydiv div').first().contents().eq(1).text();
Sean Don
  • 159
  • 1
  • 3
8

Use this code:

 $('#myDiv')
  .contents()
  .filter(function() {
    return this.nodeType == Node.TEXT_NODE;
  }).text();
Perception
  • 77,470
  • 19
  • 176
  • 187
Tushar Ahirrao
  • 11,761
  • 17
  • 62
  • 95