如果参数中的文本等于div中的文本,则隐藏最近的标签

时间:2018-09-19 14:08:51

标签: javascript jquery

如果div.level中的文本等于变量dlevel中的文本,我想隐藏最接近该div的标签。

我无法直接编辑HTML,它是由软件自动创建的,因此无法编辑div.level中的文本。实际上,变量“ dlevel”是从URL参数中提取的。我可以更改此参数(“ dlevel”的值),因为它包含“ $”可能是一个问题。但是,这需要通用,以便如果参数为50,则隐藏50的标签,而不隐藏500的标签,反之亦然。任何帮助将不胜感激。

var dlevel = '$50'; 

$('div.level').filter(function () { 
  return $(this).text() == dlevel;
}).closest('label').hide();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<div class="level-container">
    <label>
        <div class="level">
            $50
        </div>
    </label>
</div>

<div class="level-container">
    <label>
        <div class="level">
            $100
        </div>
    </label>
</div>

<div class="level-container">
    <label>
        <div class="level">
            $500
        </div>
    </label>
</div>

4 个答案:

答案 0 :(得分:1)

我认为您使用了错误的方法。

您可以使用jQuery .level遍历div each()并获取每个div的textContent

然后,您要做的就是检查文本是否等于dlevel的值,如果是,请使用closest()(遍历DOM)获取最接近的标签并将其隐藏。

var dlevel = '$50'; 

$('div.level').each(function(){
  let text = this.textContent.trim(); //or this.innerText.trim() 
  if (text == dlevel){
    $(this).closest('label').hide()
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<div class="level-container">
    <label>
        <div class="level">
            $50
        </div>
    </label>
</div>

<div class="level-container">
    <label>
        <div class="level">
            $100
        </div>
    </label>
</div>

<div class="level-container">
    <label>
        <div class="level">
            $500
        </div>
    </label>
</div>

答案 1 :(得分:0)

尝试$(this).text()。trim()=== dlevel

答案 2 :(得分:0)

尝试像这样使用each()。您还需要使用trim()删除空格。您可以使用parent()查找每个.level的标签父级,只要标签始终是父级。

let dlevel = "$50";

$('div.level').each( function() {
  if ($(this).text().trim() === dlevel) {
    $(this).parent().hide()
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<div class="level-container">
    <label>
        <div class="level">
            $50
        </div>
    </label>
</div>

<div class="level-container">
    <label>
        <div class="level">
            $100
        </div>
    </label>
</div>

<div class="level-container">
    <label>
        <div class="level">
            $500
        </div>
    </label>
</div>

答案 3 :(得分:0)

尝试使用$.each

   var dlevel = "$50";
		$.each($('div .level'),function(i,val){
        	if($(val).text().trim()==dlevel)
            {
            $(val).closest('label').hide();
            }
        }); 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<div class="level-container">
    <label>
        <div class="level">
            $50
        </div>
    </label>
</div>

<div class="level-container">
    <label>
        <div class="level">
            $100
        </div>
    </label>
</div>

<div class="level-container">
    <label>
        <div class="level">
            $500
        </div>
    </label>
</div>