2017-01-09 134 views
1

我已经通过一些类似的问题进行了搜索,但似乎无法完成此项工作。如何删除父母及其子女,如果孩子含有文字

这里是我的HTML:

<div class="main"> 
    <p class="nameLink">name1</p> 
    <p class="someClass"></p> 
    </div> 

    <div class="main"> 
    <p class="nameLink">name2</p> 
    <p class="someClass"></p> 
    </div> 

我想删除包含特定名称的股利,如 “NAME2”。 HTML目前正在从javascript文件追加,名称来自变量。

以下是我在JavaScript已经试过:

var deleteName = "name2"; 
    $('.main p.nameLink').each(function() { 
     if ($(this).text() == deleteName) {      
      $('.main').has('p:contains(deleteName)').remove() 
      return; 
     } 
    }); 

我似乎无法删除包含特定文本的股利。感谢您的帮助。谢谢。

+0

如果孩子包含文本,或者只是具有“nameLink”类的孩子,是否要删除父类“main”? – Damon

+0

@Damon,如果孩子包含文字,我想删除父母和孩子。 – marcusk7

回答

1

你的代码是有点矫枉过正,你只能使用选择器来用每个(删除它,没有用的循环在它),除非你想要做的具体行动与p元素:

var deleteName = "name2"; 
 
$('.main').has('p.nameLink:contains(' + deleteName + ')').remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="main"> 
 
    <p class="nameLink">name1</p> 
 
    <p class="someClass"></p> 
 
</div> 
 

 
<div class="main"> 
 
    <p class="nameLink">name2</p> 
 
    <p class="someClass"></p> 
 
</div>

2

通过在您的单引号内包含deleteName,它正在寻找包含字面文本"deleteName"而不是"name2"p

试试这个:

您的片段:

$('.main').has('p:contains(deleteName)').remove() 
//$('.main').has('p:contains(deleteName)').remove() 
//Searching for text: deleteName 

var deleteName = "name2"; 
    $('.main p.nameLink').each(function() { 
     if ($(this).text() == deleteName) {      
      $('.main').has('p:contains(' + deleteName + ')').remove(); 
      return; 
     } 
}); 

在你的代码实际上计算为(注释的部分)采取高峰

更正:

$('.main').has('p:contains(' + deleteName + ')').remove(); 
//$('.main').has('p:contains(name2)').remove(); 
//Searching for text: name2 
0

你忘了内插deleteName变量。目前,您正在检查包含文本deleteName的任何段落标记,而不是通过值name2

您需要使用字符串连接。例如:'string ' + 1 + ' something',收益率为'string 1 something'

这是你的代码的工作:

var deleteName = "name2"; 
 
$('.main p.nameLink').each(function() { 
 
    if ($(this).text() == deleteName) { 
 
    $('.main').has('p:contains(' + deleteName + ')').remove() 
 
    return; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="main"> 
 
    <p class="nameLink">name1</p> 
 
    <p class="someClass"></p> 
 
</div> 
 

 
<div class="main"> 
 
    <p class="nameLink">name2</p> 
 
    <p class="someClass"></p> 
 
</div>

相关问题