JQuery get text without children text

The .text JQuery method return the text of an element and all the inner element’s text so:

<div id="container">
    This is some text
    <span id="firstSpan">Span text</span>
</div>
<script type="text/javascript">
    $("#container").text(); // will return "This is some text Span text"
</script>

There are many solution on the web but no extension for jquery so I decide to do a useful Jquery plugin.

$.fn.textNoDescendants = function (text) {
    var rootElem = this;
    if (this.length == 0) // it's called like $().function()
        rootElem = $(document);

    var nodeText = rootElem.contents().filter(function () {
        return this.nodeType == 3;
    })[0];

    // if no text wil be passed, I will return the text inside
    if (text !== undefined) {
        nodeText.nodeValue = text;
        return rootElem;
    }
    else {
        return nodeText.nodeValue;
    }
};
<script type="text/javascript">
    $("#container").text(); // will return "This is some text Span text"
    $("#container").textNoDescendants(); // will return "This is some text"

    $("#container").textNoDescendants("your text"); // will replace "This is some text" with "your text"
</script>

Have a nice coding

Annunci

Informazioni su Andrea Regoli

Project Manager .Net Developer WPF WP7 Asp.Net c# javascript ajax SQL sharepoint
Questa voce è stata pubblicata in jquery e contrassegnata con , , , , , . Contrassegna il permalink.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...