【问题标题】:removing the > from a list by identifying the proper textnode with javascript/jquery通过使用 javascript/jquery 识别正确的文本节点从列表中删除 >
【发布时间】:2026-02-18 05:35:02
【问题描述】:

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

鉴于以下情况:

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

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

有什么建议吗?

【问题讨论】:

    标签: javascript jquery textnode


    【解决方案1】:

    您的标记无效。 &lt;div&gt; 元素将被踢出&lt;p&gt;

    更正标记后,您可以这样做:

    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 DEMO


    或者使用更多的 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 DEMO


    或者这个:

    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 DEMO

    【讨论】:

      最近更新 更多