Text replaces javascript jquery

First of all, hello everyone, and sorry for my English.
I would still take advantage of the experience and capabilities of this community.
Yesterday I see a ( this ) message about creating a string.
For simplicity, we will delete the tables and try to look at the following code

<div id="find">
    <div>(this match)</div>
    <div>(this match)</div>
    <div>some text1
        <div></div>
        <div>(this match)</div>
        <div>some text2</div>
        <div>some text3</div>
    </div>
</div>

in this case, if we want to find elements containing the word “match” and replace this word with the string “some other text”, we can use one of these code fragments that I found by reading the other posts in this section

$(document).ready(function(){
        var elements = $('div');
        for(var i = 0; i < elements.length; i++) {
            var current = elements[i];
            if(current.children.length === 0) {
               var x=current.textContent
               if (x.indexOf('match') > 0) {current.textContent='some other text'}
            }
        } 
})

$(document).ready(function(){
    $("#find div:contains('match'):not(:has(*))").each(function () {    
         var str=$(this).text('some other text')
    })
})

$(document).ready(function(){
    $("div").each(function(){
        var str=''
        var div = $(this).clone();
        div.find("*").remove();
        str=div.text(); 
        if (str.indexOf('match') > 0) {
            $(this).text('some other text')
        }
    })
})


However, if you edit html in this way, all fragments are erroneous.
<div id="find">(this match)
    <div>(this match)
       <div>(this match)</div>
    </div>
    <div>(this match)<div>aaaa</div></div>
    <div>some text1
        <div></div>
        <div>(this match)</div>
        <div>some text2</div>
        <div>some text3</div>
    </div>
</div>

I found a solution to this problem, but I think it is inelegant and overly verbose

$(document).ready(function(){
    var len =$('#find div').length
    for(i=1;i<len;i++){
        $('div:eq('+i+')').contents().addClass('passed').filter(function () {
         return $(this).text()==='(this match)' && $.trim(this.nodeValue).length
       }).replaceWith('some other text');
    }
    for(i=0;i<len;i++){
        var classx=$('div:eq('+i+')').attr('class')
        if(classx===undefined){
            var xx=$('div:eq('+i+')').contents()[0].nodeValue
            if (xx.indexOf('match') > 0) {
               $('div:eq('+i+')').contents()[0].nodeValue='some other text'
           }
        }
    }
})

, - ?
, , .

+1
1

, . , , "" :

$(document).ready(function(){
    $('#find div').each(function () {
        $(this).html($(this).html().replace('match', 'some other text'));
    });
});

, , , ( , ):

function findAllText (idToStartWith) {
    $('#' + idToStartWith).html($('#' + idToStartWith).html().replace('match', 'some other text'));
    while ($('#' + idToStartWith).text().indexOf('match') > 0) {
        $('#' + idToStartWith).find('*').each(function () {
            $(this).html($(this).html().replace('match', 'some other text'));
        });
    }
}
0

Source: https://habr.com/ru/post/1535720/


All Articles