jQuery:在对象中使用.remove()而不是Regex

时间:2014-04-17 11:00:06

标签: jquery regex removechild

我有一个TD,它总是包含div和div之外的一些文本。

div有四个嵌套的div,它们总是遵循以下结构。 我唯一感兴趣的是这个TD中的文字显示在主​​要div之外 ,其他一切都应该删除。

我想要保留的文字各不相同,其余部分的结构是固定的。

示例TD:

<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>

我尝试了以下工作正常。我唯一担心的是多次替换/ Regexes,我想知道我是否可以使用.remove()来减少加载时间。

如果可以,有人可以告诉我如何调整它吗? 注意:下面的第一行需要保持不变,这只是关于下面的替换/正则表达式部分。

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 个答案:

答案 0 :(得分:1)

试试这个:

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

<强> Working Demo

通过定位DIV

更新

 $('.status_hov').closest('td').find('div').remove();

答案 1 :(得分:1)

正如@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());

Working fiddle