0

今天下午我问了一个类似的问题,然后意识到答案是我的问题不正确......

给出以下内容:

<p class="p"> 
<div> </div> 
<div>
<a href="foo"> a </a>  &gt;
<a href="foo1"> b </a> 
<a href="foo2"> c</a> 
<a href="foo3"> b </a>  &gt;
<a href="foo4"> c </a> 
</div>
</p>

我需要从页面中删除“>”` 以及它前面的标签。这是一个动态列表,因此它会随着时间的推移不断增长。我需要有人锁定“>”将其删除,然后删除它之前的 a 标签。

有什么建议么?

4

1 回答 1

2

您的标记无效。元素将<div>被踢出<p>.

更正标记后,您可以执行以下操作:

var els = $('.p');

do {
    els.contents().each(function(i,el) {
        if( el.nodeType === 3 && $.trim( el.data ) === '>' ) {
            el.parentNode.removeChild(el.previousSibling);
            el.parentNode.removeChild(el);
        }
    });
} while( ( els = els.children() ).length )

JSFIDDLE 演示


或者使用更多的 jQuery:

var els = $('.p');

do {
    els.contents().each(function(i,el) {
        if( el.nodeType === 3 && $.trim( el.data ) === '>' ) {
            $(el.previousSibling).remove();
            $(el).remove();
        }
    });
} while( ( els = els.children() ).length )

JSFIDDLE 演示


或这个:

var els = $('.p');

do {
    els.contents().each(function(i,el) {
        if( el.nodeType === 3 && $.trim( el.data ) === '>' ) {
            $(el.previousSibling).add(el).remove();
        }
    });
} while( ( els = els.children() ).length )

JSFIDDLE 演示

于 2011-12-02T02:49:25.860 回答