在javascript中替换文本问题

时间:2016-04-15 17:02:35

标签: javascript jquery html

我想检查文本是否存在并将其删除。我需要查找文本是否存在并删除父项。例如,如果 With Name + Date 存在,则删除:

<dt>Font</dt>
<dd>Arial </dd>

如果存在有姓名+日期+时间的另一个例子,则删除:

<dt>Font</dt>
<dd>Comic Sans </dd>

我的代码:

jQuery( document ).ready(function() {
  if (jQuery('.item-options dd:contains("With Name")').length > 0)
  {
    var parent = jQuery('.item-options dd:contains("With Name")').parent('dl');
    jQuery(parent).find('dt:contains("Font")').html('');    
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<dl class="item-options">
  <dt>Radio test</dt>
  <dd>With Name </dd>
  <dt>Font</dt>
  <dd>no font selected </dd>
</dl>
<dl class="item-options">
  <dt>Radio test</dt>
  <dd>With Name + Date</dd>
  <dt>Font</dt>
  <dd>Arial </dd>
</dl>
<dl class="item-options">
  <dt>Radio test</dt>
  <dd>With Name + Date + Time</dd>
  <dt>Font</dt>
  <dd>Comic Sans </dd>
</dl>

我的问题是因为名字全部存在,我的javascript适用于所有人。我怎样才能使javascript完全搜索?

2 个答案:

答案 0 :(得分:1)

您可以使用jQuery的filter功能。 contains选择器不会尝试获得完全匹配,但是,就像名称所示,包含所需文本的字符串。

jQuery( document ).ready(function() {
  if (jQuery('.item-options dd').filter(function() {
    return jQuery(this).text() === "With Name";
  }).length > 0)
  {
    var parent = jQuery('.item-options dd:contains("With Name")').parent('dl');
    jQuery(parent).find('dt:contains("Font")').html('');    
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<dl class="item-options">
  <dt>Radio test</dt>
  <dd>With Name </dd>
  <dt>Font</dt>
  <dd>no font selected </dd>
</dl>
<dl class="item-options">
  <dt>Radio test</dt>
  <dd>With Name + Date</dd>
  <dt>Font</dt>
  <dd>Arial </dd>
</dl>
<dl class="item-options">
  <dt>Radio test</dt>
  <dd>With Name + Date + Time</dd>
  <dt>Font</dt>
  <dd>Comic Sans </dd>
</dl>

看起来很丑,但很有效。

Source

答案 1 :(得分:0)

如果您知道html架构或以其他方式移除您想要的任何内容。我希望这会对您有所帮助。

$( document ).ready(function() {
 if ($('.item-options dd:contains("With Name")').length > 0)
  { 
   var parent = $('.item-options');
   var children = $('.item-options').find("dd");
   $(children).each(function(i,e){
    if(~$(e).text().indexOf("With Name + Date + Time")){
     $(e).nextAll().remove();
    }
   else if(~$(e).text().indexOf("With Name + Date")){
     $(e).nextAll().remove();
    }
  });

 }
});

https://jsfiddle.net/atg5m6ym/3270/