我有以下HTML:

<div id="foo">
    <span>
        <a href="#" class="no-want">X</a>
        &nbsp;
        1
    </span>
    <span>
        <a href="#" class="no-want">X</a>
        &nbsp;
        2
    </span>
    <span>
        <a href="#" class="no-want">X</a>
        &nbsp;
        Hello
    </span>
</div>


我想使用jQuery在JS中仅获取以下12hello(这意味着没有<a>标记或&nbsp;)。请注意,我不想影响DOM本身。我只想检索对象(例如数组)中的文本。

这是我到目前为止所拥有的:

$('#foo span');


但是我似乎无法删除“ a”标签。

以下似乎也不起作用:

$('#foo span').remove('a');


我还知道.remove()会影响自身的DOM,而不仅仅是获取文本。

最佳答案

解决方案通过遍历每个孩子并将其克隆以进行操作来创建数组,从而使dom保持完整

var values = $('#foo').children().map(function () {
    var $clone = $(this).clone();
    $clone.children().remove();
    return $.trim($clone.text());
}).get();

console.log(values) /// ["1","2","Hello"]


DEMO

关于javascript - 使用jQuery选择元素的一部分?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32631417/

10-12 12:34