jQuery: используйте.remove() вместо Regex внутри объекта

У меня есть TD, который всегда содержит div и некоторый текст вне div.

У div есть четыре вложенных div, которые всегда следуют приведенной ниже структуре. Единственное, что меня интересует, это текст в этом ТД, который появляется за пределами основного div, все остальное должно быть удалено.

Текст, который я хочу сохранить, варьируется, структура остальных фиксирована.

Пример ТД:

<td>
    <div id="show_status_1622327228" class="nor_addr_status" onmouseout="show_status_div(2, this);" onmouseover="show_status_div(1, this);" style="display: none;">
        <div id="status_safe_1622327228" class="status_hov" onmouseout="javascript:chgcolor(2, this);" onmouseover="javascript:chgcolor(1, this);">
            Text1
        </div>
        <div id="status_unknown_1622327228" class="status_hov" onmouseout="javascript:chgcolor(2, this);" onmouseover="javascript:chgcolor(1, this);">
            Text2
        </div>
        <div id="status_pr_1622327228" class="status_hov" onmouseout="javascript:chgcolor(2, this);" onmouseover="javascript:chgcolor(1, this);" style="background-color: rgb(255, 255, 255);">
            Text3
        </div>
        <div id="status_fraud_1622327228" class="status_hov" onmouseout="javascript:chgcolor(2, this);" onmouseover="javascript:chgcolor(1, this);" style="background-color: rgb(255, 255, 255);">
            Text4
        </div>
    </div>
    The only text I want to keep
</td>

Я попробовал следующее, которое отлично работает. Моя единственная проблема - множественные замены / регулярные выражения, и мне интересно, смогу ли я использовать.remove() вместо этого, чтобы сократить время загрузки.

Если это возможно, может кто-нибудь здесь сказать мне, как я должен настроить это? Примечание: первая строка ниже должна остаться без изменений, это касается только части replace / Regex ниже.

util.setProp(obj, "address", $(msg).find("#tab_address_info")
    .find("td:contains('(Home)')").prev().text()
    .replace(/<div[\s\S]+?<\/div>/g, '')
    .replace(/\s+/g, ' '));

Большое спасибо за любую помощь в этом, Тим.

2 ответа

Решение

Как сказал @Milind Anantwar, вы можете использовать .remove(), Если вы хотите получить значение текста за пределами div для установки где-то еще, но на самом деле не удалить div со страницы, тогда вам нужно будет .clone()до тебя .remove()

Я думаю, может быть, вы хотите что-то вроде

var td = $('td.cleantd').clone(); //Using comment above - otherwise find the right td yourself
$('div', td).remove();
util.setProp(obj, "address", td.text());

Рабочая скрипка

Попробуй это:

 $('td div').remove();

Рабочая Демо

Обновление: с помощью DIV

 $('.status_hov').closest('td').find('div').remove();
Другие вопросы по тегам