首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >除了特定属性之外,我如何删除至少有一个属性的标记?

除了特定属性之外,我如何删除至少有一个属性的标记?
EN

Stack Overflow用户
提问于 2017-01-28 19:57:02
回答 1查看 28关注 0票数 0

我有一个文本区域,我的网站用户在其中输入他们自己的内容(基于标记标准),然后在我的网站上发布。

我使用的库(它将标记转换为每个keydown__)生成没有属性的标记。因此,为了确保UI不受用户输入的影响,我有以下代码:

代码语言:javascript
运行
复制
function cleanHtml(html) {
    var $doc = $('<span>' + html + '</span>');
    $('*', $doc).each(function (index, el) {
        if (el.hasAttributes('attributes')) {
            while ($(el).contents().length) {
                $(el).contents().last().insertAfter(el);
            }
            $(el).remove();
        }
    });
    return $doc.html();
}

上面的代码移除至少有一个属性的每个标记。这个很好用。

最近,我发现减价转换器库还生成了一些具有href属性或srcalt属性的标记。就像这样:

代码语言:javascript
运行
复制
<a href="../path">my link</a>
<img src="../path" alt="something" />

现在,我需要编辑cleanHtml()函数来删除除上述两个示例之外的每个具有属性的标记。

我怎么能这么做?

EN

回答 1

Stack Overflow用户

发布于 2017-01-28 20:06:23

检查$(el).attr('src')$(el).attr('src')是否返回未定义的:

代码语言:javascript
运行
复制
el.hasAttributes('attributes') && ( !$(el).attr('src') && !$(el).attr('href') )

代码语言:javascript
运行
复制
$('*').each(function(i, el){
    if(el.hasAttributes('attributes') && ( !$(el).attr('src') && !$(el).attr('href') )  ) {
      $(el).remove();
   } 
});
代码语言:javascript
运行
复制
p {
   width:100px;
   height:100px;
   background:#ddd;
}
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<a href="http://unsplash.it" style="color:#f44336">my link</a>
<a href="http://unsplash.it" style="color:#f44336;size:16px">Unsplash 2</a>
<img src="http://unsplash.it/100" alt="something" />
<p id="s" data-a="a"></p>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41914194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档