jQuery中的纯文本选择器

时间:2009-10-05 14:46:42

标签: jquery

我想保留第一个<a><span>,但请删除以下内容:

<div>
    <a href="http://aerospace.com">Aerospace</a> and 
    <a href="http://aviation.com">Aviation</a>
    <span class="blah">(15)</span>
</div>

我发现,似乎没有明显的匹配纯文本and。我正在尝试将nextAll()与过滤器一起使用:

$("a:contains('Aerospace')").each(function() {
    $(this).nextAll().filter(":not(span)").empty();
});

and文字留在那里。

是否可以匹配jQuery中的文本?有没有文本选择器这样的东西,所以我可以使用像filter (":isText()")

这样的东西

2 个答案:

答案 0 :(得分:2)

$("a:contains('Aerospace')").parent().contents().each(function() {
    if ( this.nodeType == 3 ) {
        var text = this.textContent? this.textContent: this.innerText;
        text = $.trim( text );
        if ( text.length ) {
            alert( text );
        }
    }
});

在我的脑海中,这样的东西应该可以工作,你向下移动到父母并对所有内容进行操作,而不仅仅是element nodeType 1 nodeType个节点但包括3 {{1}}的textNodes。

如果这不起作用,请告诉我。

答案 1 :(得分:0)

如何复制span,然后移除div中的所有内容,然后重新放入span

$("a:contains('Aerospace')").each(function()
{
    var span = $(this).parent().children("span").clone();
    $(this).parent().empty().append(span);
});