2012-07-06 23 views
23

por ejemplo tenemos este archivojQuery - obtener el texto para el elemento sin hijos texto

<div id="mydiv"> 
    some text here 
    <div id="inner div"> 
     text for inner div 
    </div> 
</div> 

Necesito conseguir #mydiv sólo texto con un poco de código como este:

alert($('#mydiv').text()); // will alert "some text here" 
+0

¿Desea nodos de texto * todos * secundarios, sin nódulos de texto anidados más profundamente? –

+0

@ F.Calderan gracias –

Respuesta

43

bueno probar esto, por favor" : http://jsfiddle.net/MtVxx/2/

buen enlace para su caso específico aquí: http://viralpatel.net/blogs/jquery-get-text-element-without-child-element/ (Esto sólo se conseguirá el texto del elemento)

Espero que esto ayude, :)

código

jQuery.fn.justtext = function() { 

    return $(this).clone() 
      .children() 
      .remove() 
      .end() 
      .text(); 

}; 

alert($('#mydiv').justtext());​ 
+0

@Random nopes its not me ': P' mis complementos suelen ser largos y largos y plugins aburridos':) '(Not) –

+7

+1 para usar .end(). Nunca supe que existía y ahora es útil. – Grinn

+0

@Grinn saweet bruv, sí hay algunas jq apis, que son increíbles pero no muy utilizadas :) gracioso que eh, gracias por más 1. –

24

El momento accepted answer es bastante horrible en términos de rendimiento, por lo que me sentí obligado a escribir una más ligera uno:

$.fn.mytext = function() { 
    var str = ''; 

    this.contents().each(function() { 
     if (this.nodeType == 3) { 
      str += this.textContent || this.innerText || ''; 
     } 
    }); 

    return str; 
}; 

console.log($('#mydiv').mytext());​ 
+1

Mucho mejor! Estaba buscando una manera de iterar sobre cada elemento secundario del elemento seleccionado, y no sabía sobre 'contents()', ¡gracias! –

+0

Consulte http://stackoverflow.com/a/6520267/14731 para obtener una respuesta relacionada. – Gili

Cuestiones relacionadas