如果DOM元素包含字符串,请删除它

时间:2013-07-03 08:08:28

标签: javascript jquery

所以我有这个代码来检查Name是否存在,如果它存在,它会删除它嵌套的span标记。

<div id="box">
  <br>
  <span style="font-size: 12px">
    <a>
      <span style="color: #000000">
        <b>Name</b>
      </span>
    </a>
  </span>

但是名称也可以放在这些标签中:

  <br>
  <span>
    <a>Name</a>
  </span>
</div>

我如何使用jquery进行检查? 我试过了:

$('span:contains("Name")').remove();
$('span > a > span b:contains("Name")').remove();

似乎没什么用。

编辑#2:还有我刚才包含的br标签。我想删除它们只有在删除标签之前。

感谢。

4 个答案:

答案 0 :(得分:2)

如果您想要使用文本“名称”确切地定位元素,则可以使用filter(),而不是:contains,它将使用文本定位元素,例如“带有其他文本的名称......”:< / p>

在.load()回调函数中设置代码

$('#box').load('myUri', function () {
    $('#box span').has('b, a').filter(function () {
        return $.trim($(this).text()) === "Name";
    }).remove();
});

等同于:contains将是:

$('#box span').has('b, a').filter(function(){
    return $(this).text().indexOf("Name") != -1;
}).remove();

更新后的评论:

$('#box').load('myUri', function () {
     $('#box span').has('b, a').filter(function () {
         var toRemoveSpan = $(this).text().indexOf("Name") != -1 ? true : false;
         if (toRemoveSpan && $('span').prev('br').length) {
             $(this).prev('br').remove()
         }
         return toRemoveSpan;
     }).remove();
 });

这将不仅仅是:$('#box').empty();

如果这不是您想要的行为,您必须在问题中更具体。

答案 1 :(得分:1)

这样的事情怎么样:

$('a:contains("Name"),b:contains("Name")').parents("span").remove();

答案 2 :(得分:1)

根据编辑,您需要在加载元素后执行脚本。

你需要使用加载方法的回调来执行它,如果你使用.load()然后它有一个成功的回调,你可以调用它

答案 3 :(得分:1)

试试这个:

$(function () {
    $('div#box span a span b:not(:contains("Name"))').remove();
})

<强> DEMO

相关问题