如果网页上没有特定字符串,则隐藏元素

时间:2018-05-12 20:52:02

标签: jquery

我想在课程中隐藏一个div' .femanager_moduleSysDmailNewsletter'如果字符串" Mitgliedsnummer"可在当前网页上找到。现在div始终是隐藏的。 这就是我试过的:

$(function () {
    if ("p:contains(Mitgliedsnummer)") {
        $(".femanager_moduleSysDmailNewsletter").hide();
    } else {
        $(".femanager_moduleSysDmailNewsletter").show();
    }
});

3 个答案:

答案 0 :(得分:1)

首先,"p:contains(Mitgliedsnummer)"只是一个字符串而不是jQuery选择器,所以它总是会计算为true。你想要的是将它转换为jQuery选择器,然后检查它的长度。假值(0)表示没有元素与您的选择器匹配,而真值(1或更多)表示至少有一个<p>元素包含您感兴趣的文本。

这样做会有效:

if ($("p:contains('Mitgliedsnummer')").length) {
    $(".femanager_moduleSysDmailNewsletter").hide();
} else {
    $(".femanager_moduleSysDmailNewsletter").show();
}

&#13;
&#13;
$(function() {

  var containsText = $('p:contains("Mitgliedsnummer")');
  if (containsText.length) {
    $(".femanager_moduleSysDmailNewsletter").hide();
  } else {
    $(".femanager_moduleSysDmailNewsletter").show();
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="femanager_moduleSysDmailNewsletter">
  Target div to be toggled
</div>

<p>Mitgliedsnummer</p>
<p>lorem ipsum</p>
<p>foo bar</p>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您需要查看$(selector)

if($(selector))

$()将始终是真实的,因为无论是否找到选择器匹配,总是返回一个对象

在您的情况下,您忽略了if(StringValue)部分并且只是检查 if ("p:contains(Mitgliedsnummer)") { ,只要字符串不为空,它也是真的

尝试更改

 if ($("p:contains(Mitgliedsnummer)").length) {

mystring

答案 2 :(得分:0)

当您输入类似$(function () { if($('p').is(':contains("Mitgliedsnummer")')) { $(".femanager_moduleSysDmailNewsletter").hide(); } else { $(".femanager_moduleSysDmailNewsletter").show(); } }); 时实际上这不是任何布尔值,它是一个选择器。尝试以下方式:

length