【问题标题】:Hide DIV based on text value within DIV根据 DIV 中的文本值隐藏 DIV
【发布时间】:2014-08-30 17:45:03
【问题描述】:

我对 JQuery 相当陌生,当 td.ms-vb 的内容包含文本“当前没有活动公告”时,我试图隐藏 DIV #SAlertWrap。 td.ms-vb 包含在#SAlertWrap 中。

我可以隐藏 DIV 本身,但不知道如何根据文本值隐藏它。

$(document).ready(function() {
$('#SAlertWrap').hide( );
});

我也可以选择文本来隐藏或替换文本,但这只会影响特定的行。

$(document).ready(function() {
$("td.ms-vb:contains('There are currently no active announcements')").parent().hide();
});

我尝试用 $('#SAlertWrap') 替换 parent() 并不断收到语法错误。

关于如何将这些结合起来的任何想法?

谢谢

【问题讨论】:

    标签: jquery hide contains


    【解决方案1】:
    $(document).ready(function() {
      if ($("td.ms-vb").text() == 'There are currently no active announcements') {
        $("td.ms-vb").parent().hide();
      }
    });
    

    【讨论】:

    • 这只会测试第一个td.ms-vb,然后根据该TD的内容隐藏所有
    【解决方案2】:

    你可以这样做:

    if ( $("td.ms-vb:contains('There are currently no active announcements')").length )
        $('#SAlertWrap').hide( );
    

    .length 检查选择器提供的匹配元素数组。如果长度大于 0,则隐藏您的元素。 (0 在 JS 中是假的)

    【讨论】:

      【解决方案3】:

      使用您的方法,但使用带有可选选择器的 .parent()。如果您的 td 不是直接孩子,请改用 .parents()

      $(document).ready(function() {
        $("td.ms-vb:contains('There are currently no active announcements')")
         .parents('#SAlertWrap').hide();
      });
      

      使用.closest 代替父母可能会稍微提高性能。

      【讨论】:

      • 谢谢!这正是我想要的。我将阅读 .parents() 方法以了解更多关于如何在未来使用它。
      猜你喜欢
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多