【问题标题】:How to hide "span" if it text is "0" using jQuery?如果使用jQuery的文本为“0”,如何隐藏“span”?
【发布时间】:2017-07-07 06:11:32
【问题描述】:

我正在寻找隐藏包含 0 的跨度。我查看了其他代码并尝试对其进行调整,但无法使其正常工作。我希望它只在内容为“0”时隐藏跨度,但在运行下面的代码时,它也会隐藏任何包含 0 的数字,例如 10,这是我不想要的。

为了更清楚一点,span 应该只在其中的数字大于 0 时才显示(它是一个从 0 开始的计数器,所以无论如何不能小于 0)。

感谢任何帮助。

HTML

<div id="post-excerpts-likes">
    <a href="#" class="zilla-likes" id="zilla-likes-175519" title="Like this">
        <span class="zilla-likes-count">0</span>
    </a>
</div>

jQuery

$(".zilla-likes-count:contains('0')").hide();

还请注意,页面上有多个跨度都具有相同的类,我希望代码能够影响它们。

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    您可以迭代每个匹配的元素,然后检查其文本以查看它是否与“0”完全匹配,如果匹配则隐藏它。

    给你:

    $(".zilla-likes-count").each((i,e) =&gt; e.textContent === '0' ? $(e).hide() : '');
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="post-excerpts-likes">
        <a href="#" class="zilla-likes" id="zilla-likes-175519" title="Like this">
            <span class="zilla-likes-count">0</span>
            <span class="zilla-likes-count">10</span>
            <span class="zilla-likes-count">55</span>
                            
        </a>
       
    </div>

    【讨论】:

      【解决方案2】:

      您需要选择具有完全相同文本的元素,但 :contains() 不是您想要的。 .filter() 是一个很好的基于文本过滤选定元素的功能。

      $(".zilla-likes-count").filter(function(){
        return $(this).text().trim() === "0";
      }).hide();
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <div id="post-excerpts-likes">
          <a href="#" class="zilla-likes" id="zilla-likes-175519" title="Like this">
              <span class="zilla-likes-count">Text0Text</span>
              <span class="zilla-likes-count">0</span>
          </a>
      </div>

      【讨论】:

      • 推荐使用=== "0"而不是类型推断。特别是("" == 0) == true 所以也会拾取空元素。
      • @freedomn-m 好话。谢谢。
      【解决方案3】:

      一个一个循环,用.text()查看内容:

      $(".zilla-likes-count").each(function(){
          if ($(this).text() === '0') {
              $(this).hide();
          }
      });
      

      【讨论】:

        【解决方案4】:

        简单.. 只需遍历类数组并检查其值是否包含0。所以,代码是这样的:

        $(".zilla-likes-count").each(function(){
            if ($(this).text() === '0') $(this).hide();
        });
        

        【讨论】:

        • 这根本不会改变行为。包含零的元素将被隐藏,而不是内容恰好为零的元素。
        • 啊,我的错。 OP 说该值是一个计数器编号,这完全让我没有注意到。感谢您的纠正:) +1
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-17
        相关资源
        最近更新 更多