Skip to content Skip to sidebar Skip to footer

Iterate Over Every Element And Get Only The Content That Is Directly In The Node

let's assume I have this code

FirstLevelP SecondLevelSpan

FirstLevelP SecondLevelSpan

Thi

Solution 1:

finding and changing text without child elements works this ways:

// search every element
    $("body *").each(function(index, el) {
        // find first text nodevar node = $(el).contents().filter(function() {
            returnthis.nodeType === 3;
        })[0];

        // change text
        node.textContent = "new text";
    });

Solution 2:

Edit, Updated

Try

    $("body *").each(function (i, el) {
        if ($(el).is("p, span")) {
            $(el).text(function (idx, text) {
               var t = text.split("\n")[0];
               // if `text` string's last character is not `.`// concat `.` to `text` string ,// return `text` original string's with `.` addedreturn t.slice(-1) !== "." ? t + "." : t
            })
        }
    })

$("body *").each(function (i, el) {
        if ($(el).is("p, span")) {
            $(el).text(function (idx, text) {
               var t = text.split("\n")[0];
               return t.slice(-1) !== "." ? t + "." : t
            })
        }
    })
<scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script><p>FirstLevelP
    <span>SecondLevelSpan</span></p><p>FirstLevelP
    <span>SecondLevelSpan
        <p>ThirdLevelP</p></span></p>

Post a Comment for "Iterate Over Every Element And Get Only The Content That Is Directly In The Node"