【问题标题】:Replace a set of html br elements with another in jQuery -- parsing HTML with jQuery在jQuery中用另一个替换一组html br元素——用jQuery解析HTML
【发布时间】:2011-10-29 11:31:02
【问题描述】:

所以这是我的问题。我的网站上有一个小型第三方服务,它从 RSS 提要生成一堆 HTML,并在页面加载时将其粘贴到我的网页中。但是,当它生成 HTML 时,它会插入一堆完全不必要的中断标记。不幸的是,生成此代码的源文件在第三方的服务器上,而不是我的,所以我无法对其进行调整。

因此,我试图在页面加载之前通过在 body 标记的 onLoad="" 属性中使用一点 jQuery 来调整 HTML。但是,我不能简单地使用类似 $('br').remove();因为那时没有任何中断标签,我需要每个位置一个,目前有三个。

所以最终,我需要做的是想出一个替换的 jQuery 语句

<br><br clear=all><br>

<br />

我对 jQuery 比较陌生,但我似乎找不到任何可以帮助我做到这一点的东西。有什么想法吗?

提前感谢您的帮助!

【问题讨论】:

    标签: javascript jquery html html-parsing


    【解决方案1】:

    您最好使用正则表达式而不是 jquery。最简单的例子:

    string.replace('<br><br clear=all><br>', '<br />')
    

    【讨论】:

    • 用正则表达式解析 HTML 很糟糕,为此使用解析器
    【解决方案2】:

    假设它们的格式与您提供的完全相同,您可以这样做:

    var br = $('br[clear="all"]');
    br.attr('clear', '');
    br.prev('br').remove();
    br.next('br').remove();
    

    【讨论】:

      【解决方案3】:

      您可以使用选择器属性,而不是在 onload 中,而是在 jquery ready (http://api.jquery.com/ready/) 中

      $('br[clear=all]').remove();

      选择器属性的更多细节:http://api.jquery.com/attribute-equals-selector/

      【讨论】:

        【解决方案4】:

        为什么不直接替换 RSS HTML 容器的 html:

          yourContainerElem.innerHTML =  yourContainerElem.innerHTML.replace(/<br><br clear=all><br>/gi, '<br />');
        

        【讨论】:

          【解决方案5】:

          删除除一个以外的所有内容:

          $('br,[clear!="all"]').remove()
          

          然后删除'clear=all':

          $('br').removeAttribute('clear')
          

          【讨论】:

            【解决方案6】:

            使用Next Adjacent Selector (+)

            $("br+br").remove(); //Removes all <br> tags in front of another
            

            jsFiddle demo

            【讨论】:

            • 这是迄今为止最简单的解决方案(有效)。非常感谢您的建议和演示!
            猜你喜欢
            • 1970-01-01
            • 2015-02-12
            • 2013-11-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多