jquery remove function not returning replaced html

Rahyab Ahmed :

I have the following function. I am trying to remove all <img> tags and only the second row from table that is inside this data. The code and selectors work fine in console but I don't get the result in data variable after replacing all things.

 function fetchDetails(URLToRead, email) {
        $.get(URLToRead, function (data) {
            console.log(data);
            var imgTags = $(data).find('img');
            $.each(imgTags, function (i,v) {
                $(v).remove();
            });
            $(data).find('table tr:nth-child(2)').remove();
            console.log(data);
        });
    }

URLToRead content:

<TABLE>
                <TR>
                    <TD>
                        <span></span>
                    </TD>
                </TR>
                <TR>
                    <TD></TD>
                </TR>
                <TR>
                    <TD ><span ></TD>
                </TR>
                <TR>
                    <TD height="12" colSpan="4"><IMG src="../images/spacer.gif" width="20" height="7"></TD>
                </TR>
            </TABLE>
Anurag Srivastava :

The problem is that .remove() works on elements that are in the DOM. Your data is never added to the DOM.

You can create a div with display: none and then perform the needed operations to it:

let data = `
<TABLE>
                <TR>
                    <TD>
                        <span></span>
                    </TD>
                </TR>
                <TR>
                    <TD></TD>
                </TR>
                <TR>
                    <TD ><span ></TD>
                </TR>
                <TR>
                    <TD height="12" colSpan="4"><IMG src="../images/spacer.gif" width="20" height="7"></TD>
                </TR>
            </TABLE>
`

let tempDiv = $("<div style='display: none;'></div>")

$("body").append(tempDiv)
$(tempDiv).append(data)

$(tempDiv).find('img').remove();
$(tempDiv).find('table tr:nth-child(2)').remove();

console.log($(tempDiv).html())
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=391276&siteId=1