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();